asp.net core2 mvc 基础教程--中间件

什么是中间件

在 ASP.NET Core 中,中间件(Middleware)是一个可以处理 HTTP 请求或响应的软件管道。

ASP.NET Core请求流程由一系列请求委托组成,如下图所示(执行流程遵循黑色箭头):

每个委托可以在下一个委托之前和之后执行操作。委托还可以决定不将请求传递给下一个委托,这称为请求管道的短路。短路通常是可取的,因为它避免了不必要的工作。例如,静态文件中间件可以返回一个静态文件的请求,并使管道的其余部分短路。需要在管道早期调用异常处理委托,因此它们可以捕获后面管道的异常。

public class Startup
{
    public void Configure(IApplicationBuilder app)
    {
        app.Use(async (context, next) =>
            {
                await context.Response.WriteAsync("进入第一个委托 执行下一个委托之前\r\n");
                //调用管道中的下一个委托
                await next.Invoke();
                await context.Response.WriteAsync("结束第一个委托 执行下一个委托之后\r\n");
            });
            app.Run(async context =>
            {
                await context.Response.WriteAsync("进入第二个委托\r\n");
                await context.Response.WriteAsync("Hello from 2nd delegate.\r\n");
                await context.Response.WriteAsync("结束第二个委托\r\n");
            });
    }
}

上诉代码中讲的app.Use 链接委托 next 调用进入下一个委托 app.Run 终止了管道 管道不会向下执行 管道有正进反出的效果 结果如下

进入第一个委托 执行下一个委托之前
进入第二个委托
Hello from 2nd delegate.
结束第二个委托
结束第一个委托 执行下一个委托之后
中间件的顺序 对安全性,性能是有影响的

内置中间件

ASP.NET Core附带的常用中间件组件:

中间件 描述
Authentication 提供身份验证支持
CORS 配置跨域资源共享
Response Caching 提供缓存响应支持
Response Compression 提供响应压缩支持
Routing 定义和约束请求路由
Session,Cookie 提供用户会话管理
Static Files 为静态文件和目录浏览提供服务提供支持
URL Rewriting Middleware 用于重写 Url,并将请求重定向的支持
 
 


猜你喜欢

转载自www.cnblogs.com/cqqinjie/p/13172935.html
今日推荐