DotNetCore学习-3.管道中间件

中间件是用于组成应用程序管道来处理请求和响应的组件。管道内的每个组件都可以选择是否将请求交给下一个组件,并在管道中调用下一个组件之前和之后执行一些操作。
请求委托被用来建立请求管道,并处理每一个HTTP请求。
管道中的中间件的处理逻辑类似于责任链的处理,当前中间件能够处理的话就处理,不能处理就交给下一个进行处理。
管道中间件的设定是在Startup类中的Configure函数中设置,根据每个中间件在代码中的前后位置来设定其触发的顺序。
中间件的顺序通常会影响到请求处理的顺序,因此,对程序的性能、功能和安全都方面都很关键,需要仔细的进行配置。
每个管道中间件的处理逻辑中,都可以使用next属性来获取下一个管道中间件委托。
HTTP请求管道中间件的配置有以下三种方式

  • Run
    使用该方法将短路管道,不会再调用下一个管道中间件。因此,该方法只能在管道尾部被调用。
  • Use
    使用该方法向管道中添加中间件,添加顺序即为中间件处理请求的顺序。每个中间件中处理逻辑中可以使用next来获取下一个中间件的委托。
  • Map
    使用该方法用于匹配基于请求路径的请求委托。Map方法只接受路径,并配置单独的中间件管道的功能。即任何基于该路径的请求都会被该中间件所处理。
    ASP.NET Core中内置的中间件包括以下几种:
  • 身份验证Authentication
    需要添加Microsoft.AspNetCore.Identity的程序集引用

后续学习后再添加学习记录

  • 跨域资源共享CORS
    需要添加Microsoft.AspNetCore.Cors的程序集引用
public void ConfigureServices(IServiceCollection services)
{
    services.AddCors();
}
public void Configure(IApplicationBuilder app)
{
    app.UseCors(builder => builder.WithOrigins("http://example.com"));
}
  • 路由Routing
    需要添加Microsoft.AspNetCore.Routing的程序集引用
后续学习后再添加学习记录
  • 回话Session
    需要添加 Microsoft.AspNetCore.Session的程序集引用
public void ConfigureServices(IServiceCollection services)
{
    services.AddDistributedMemoryCache();
    services.AddSession(options =>
    {
        // Set a short timeout for easy testing.
        options.IdleTimeout = TimeSpan.FromSeconds(10);
        options.Cookie.HttpOnly = true;
    });
}
public void Configure(IApplicationBuilder app)
{
    app.UseSession();
}
  • 静态文件
    需要添加Microsoft.AspNetCore.All metapackage的程序集引用
public void Configure(IApplicationBuilder app)
{
    app.UseStaticFiles();
}
原文地址:https://www.cnblogs.com/DreamOfLife/p/9401217.html