Asp.net Core 2.2关于中间件的理解 Sam.Zheng 2019-09-06
1 什么中间件
ASP.NET Core的中间件通过一个类型Func
Asp.net Core 关于Startup中间件的注册
2 Asp.net core 2.2 常用中间件
中间件 Authentication CORS Response Caching Response Compression 描述 提供身份验证支持 配置跨域资源共享 提供缓存响应支持 提供响应压缩支持 中间件 Routing Session Static Files URL Rewriting Middleware 描述 定义和约束请求路由 提供用户会话管理 为静态文件和目录浏览提供服务提供支持 用于重写 Url,并将请求重定向的支持 3 执行流程
4 默认中间件说明
创建Asp.net core 2.2版本后将在Startup.cs有Configure函数。这里是配置中间件的地方。
public void Configure(IApplicationBuilder app, IHostingEnvironment env) {
if (env.IsDevelopment()) {
app.UseDeveloperExceptionPage(); } else {
app.UseExceptionHandler(\);
}
app.UseStaticFiles(); app.UseCookiePolicy();
app.UseMvc(routes => {
routes.MapRoute( name: \,
template: \); }); }
? 异常中间件
app.UseExceptionHandler(\); 捕获以后调用中发生的任何异常 ?
静态文件中间件 app.UseStaticFiles();
静态文件中间件不提供授权检查。 由其提供的任何文件,包括wwwroot下的文件都是公开的。 如果请求没有被静态文件中间件处理,它将被传递给执行身份验证的Identity中间件(app.UseAuthentication)。 身份不会使未经身份验证的请求发生短路。 虽然身份认证请求,但授权(和拒绝)仅在MVC选择特定的Razor页面或控制器和操作之后才会发生。 ?
Cookie策略中间件
实现IResponseCookies接口,添加、删除cookie时加入自定义控制方法,并支持全局cookie属性设置。
实现CookieOptions.IsEssential的功能,该属性标识当前属性是否必须的或是否绕过ITrackingConsentFeature的检查。
实现ITrackingConsentFeature接口,该接口主要是向cookie中添加并检索用户确认设置。 ?
Mvc中间件
MVC框架能够处理请求并返回响应(通常是view result或json) 说明:IApplicationBuilder 需要独立进行梳理。
5 创建创建中间件
例1: 使用IApplicationBuilder 中.Run方法,创建一个中间件并运行。
public void Configure(IApplicationBuilder app, IHostingEnvironment env) {
//使用委托创建第一个中间件 app.Run(async context => {
await context.Response.WriteAsync(\); });