ASP.NET Core中间件组件是被组装到应用程序管道中以处理HTTP请求和响应的软件组件(从技术上来说,组件只是C#类)。 ASP.NET Core应用程序中的每个中间件组件都执行以下任务。
选择是否将 HTTP 请求传递给管道中的下一个组件。这可以通过在中间件中调用下一个 next() 方法实现。 可以在管道中的下一个组件之前和之后执行工作。 在ASP.NET Core中,已经有很多内置的中间件组件可供使用,您可以直接使用它们。 如果需要,还可以在ASP.NET Core应用程序中创建自己的中间件组件。 您需要牢记的最重要的一点是,在ASP.NET Core中,给定的中间件组件应仅具有特定目的,即单一职责。
中间件注册
Use: 以委托的方法注册中间件
UseMiddleware: 以类型的方式注册中间件,T表示中间件的类型
Map: 将特定的请求地址(path)与中间件绑定,即path 匹配时执行该中间件
MapWhen: 定义一个逻辑判断委托,当判断为True时,执行指定中间件
Run : 表示一个断路中间件,是执行并返回给上游的中间件,无后续中间件
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.Use(async (context, next) =>
{
// 中间件的处理逻辑
context.Item["key1"]=“now”;
//交给后续的中间件进行处理
await next.Invoke();
// 后续中间件处理完成后的后期处理
if(context.Response.HasStarted)
{
//一旦已经开始输出,就不能再修改响应头的内容
}
});
app.Map("/map1", abc=>{
abc.Use(async (context, next) =>
{
await next();
await context.Response.