Predict output:
Example1.
var builder = WebApplication.CreateBuilder(args);
var env = builder.Environment;
var logging = builder.Logging;
var services = builder.Services;
services.AddControllers();
var app = builder.Build();
app.Use(async (context, next) =>
{
await context.Response.WriteAsync("First Use Middleware\n"); // first execute
await next();
});
app.Use(async (context, next) =>
{
await context.Response.WriteAsync("Second Use Middleware\n"); // second execute
await next();
});
app.Run();
Output:
First Use Middleware
Second Use Middleware
Example2.
var builder = WebApplication.CreateBuilder(args);
var env = builder.Environment;
var logging = builder.Logging;
var services = builder.Services;
services.AddControllers();
var app = builder.Build();
app.Use(async (context, next) =>
{
await next();
await context.Response.WriteAsync("First Use Middleware\n"); // #2
});
app.Use(async (context, next) =>
{
await context.Response.WriteAsync("Second Use Middleware\n"); // #1
await next();
});
app.Run();
Output:
Second Use Middleware
First Use Middleware
Example3.
var builder = WebApplication.CreateBuilder(args);
var env = builder.Environment;
var logging = builder.Logging;
var services = builder.Services;
services.AddControllers();
var app = builder.Build();
app.Use(async (context, next) =>
{
await next();
await context.Response.WriteAsync("First Use Middleware\n"); // #2
});
app.Use(async (context, next) =>
{
await next();
await context.Response.WriteAsync("Second Use Middleware\n"); // #1
});
app.Run();
Output:
Second Use Middleware
First Use Middleware
Example4.
var builder = WebApplication.CreateBuilder(args);
var env = builder.Environment;
var logging = builder.Logging;
var services = builder.Services;
services.AddControllers();
var app = builder.Build();
app.Use(async (context, next) =>
{
context.Response.Headers["cutsom-response-header"] = "This is a response header";
await next();
await context.Response.WriteAsync("First Use Middleware\n"); // #2
});
app.Use(async (context, next) =>
{
await next();
await context.Response.WriteAsync("Second Use Middleware\n"); // #1
});
app.Run();
Output:
Second Use Middleware
First Use Middleware
Example5.
var builder = WebApplication.CreateBuilder(args);
var env = builder.Environment;
var logging = builder.Logging;
var services = builder.Services;
services.AddControllers();
var app = builder.Build();
app.Use(async (context, next) =>
{
context.Response.Headers["cutsom-response-header"] = "This is a response header"; //#1
await next();
await context.Response.WriteAsync("First Use Middleware\n"); //#4
});
app.Use(async (context, next) =>
{
context.Response.Headers["custom-response-header"] = "This is second response header"; //#2
await next();
await context.Response.WriteAsync("Second Use Middleware\n"); //#3
});
app.Run();
Output:
Second Use Middleware
First Use Middleware
Example6.
var builder = WebApplication.CreateBuilder(args);
var env = builder.Environment;
var logging = builder.Logging;
var services = builder.Services;
services.AddControllers();
var app = builder.Build();
app.Use(async (context, next) =>
{
await next();
await context.Response.WriteAsync("First Use Middleware\n"); //#4 NEVER executed
context.Response.Headers["response-header-first"] = "This is a response header"; //#3 ERROR Cannot modify after Response has started
});
app.Use(async (context, next) =>
{
context.Response.Headers["response-header-second"] = "This is second response header"; //#1
await next();
await context.Response.WriteAsync("Second Use Middleware\n"); //#2
});
app.Run();
Output:
This localhost page can’t be foundNo webpage was found for the web address: https://localhost:7205/
HTTP ERROR 404
Example7.
var builder = WebApplication.CreateBuilder(args);
var env = builder.Environment;
var logging = builder.Logging;
var services = builder.Services;
services.AddControllers();
var app = builder.Build();
app.Use(async (context, next) =>
{
await next(); //#1
await context.Response.WriteAsync("First Use Middleware\n"); //#2
context.Response.Headers["response-header-first"] = "This is a response header"; //#3 ERROR
});
app.Run();
Example8.
var builder = WebApplication.CreateBuilder(args);
var env = builder.Environment;
var logging = builder.Logging;
var services = builder.Services;
services.AddControllers();
var app = builder.Build();
app.Use(async (context, next) =>
{
await next(); //#1
context.Response.Headers["response-header-first"] = "This is a response header"; //#2
await context.Response.WriteAsync("First Use Middleware\n"); //#3
});
app.Run();
Output:
First Use Middleware