net5 自定义 中间件

net5常用的中间件

1.app.Run,中断式,只要是使用当前中间件,后面的中间件都不执行;
2.app.Map,判断路径中是否包含什么内容;
3.app.MapWhen判断式,两个委托,第一个委托作为判断条件内容,第二个委托,是要执行的逻辑;
ps:中间件的执行方式是一个俄罗斯套娃:-----典型的Aop应用,类似的还有Filter 

自定义中间件

要求

  1. 构造函数传递一个RequestDelegate的参数类型
  2. 包含一个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 }
原文地址:https://www.cnblogs.com/wangmaolin/p/14532916.html