net5常用的中间件
1.app.Run,中断式,只要是使用当前中间件,后面的中间件都不执行; 2.app.Map,判断路径中是否包含什么内容; 3.app.MapWhen判断式,两个委托,第一个委托作为判断条件内容,第二个委托,是要执行的逻辑; ps:中间件的执行方式是一个俄罗斯套娃:-----典型的Aop应用,类似的还有Filter
自定义中间件
要求
- 构造函数传递一个RequestDelegate的参数类型
- 包含一个async Task 的方法,该方法的参数为HttpContext
1 public class CustomMiddleWare 2 { 3 private readonly RequestDelegate _next; 4 5 public CustomMiddleWare(RequestDelegate next) 6 { 7 _next = next; 8 } 9 public async Task Invoke(HttpContext context) 10 { 11 await context.Response.WriteAsync($"<p>{nameof(CustomMiddleWare)},Hello World1!</p>"); 12 await _next(context);//---------------------这块是为了执行下一个中间件 13 await context.Response.WriteAsync($"<p>{nameof(CustomMiddleWare)},Hello World1!</p>"); 14 } 15 }
在Startup中引入就行
1 public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory) 2 { 3 app.UseMiddleware<CustomMiddleWare>(); //使用自定义中间件 4 }