.NetCore 简单的使用中间件

导读:本篇文章讲解 .NetCore 简单的使用中间件,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

//定义中间件

我们定定义中间件通常有 app.Use(), app.Run(), app.Map() , appMapWhen()四个方法

1:app.Use()

IApplicationBuilder Use(Func<RequestDelegate, RequestDelegate> middleware);

其中 RequestDelegate 仍然是一个委托,需要满足如下的签名

public delegate Task RequestDelegate(HttpContext context);

 

app.Use(next =>
{
       return new RequestDelegate(async c =>
      {
    await c.Response.WriteAsync(“start-88888888888”);
    await next.Invoke(c);
    await c.Response.WriteAsync(“end-88888888888”);
      });
});

 

2:app.Run() 默认会终止后面的所有管道事件或者中间件等函数,如果app.Use()去掉了 await next.Invoke()就和 app.Run()是等价的效果

3:app.Map()  这个方法为我们提供了一些方便的分支处理 ,它是在管道中增加了分支。通过映射路径来判断处理管道分支

  public static IApplicationBuilder Map(this IApplicationBuilder app, PathString pathMatch, Action<IApplicationBuilder> configuration);

pathMatch 我们从字面意思上就可以理解到,请求的链接路径匹配的话,就执行 configuration 里面的中间件或者函数

 

   app.Map(“/mapTest”, DoMyHandler);   //doHandler 为自定义的相关匹配签名函数即可
    app.Run(async context =>
           {
                      await context.Response.WriteAsync(”  hello world! “);
           });

  private void DoMyHandler(IApplicationBuilder build)
  {
     build.Use(next => new RequestDelegate(async c =>
     {
    await c.Response.WriteAsync(“你好”);
     }));
  }

//–或者如下

   private static void doMyHandler(IApplicationBuilder app)
       {
           app.Run(async context =>
           {                await context.Response.WriteAsync(“你好我好大家好!”);
           });
       }

4:app.MapWhen() 从字面上可以理解为 符合判断才会进入对应的中间件

   app.MapWhen(context =>
   { 
        return context.Request.Query.ContainsKey("qq"); 
   }, DoMyHandler);  

中间件我们通常是把上面的方法给提出来并放在一个class类里面,并进一步使用扩展方法, IApplicationBuilder相当于一个容器集合!

 5:一些简单的测试截图如下:

.NetCore 简单的使用中间件

.NetCore 简单的使用中间件

6:新增扩展方法就显得更加的规范了:

 .NetCore 简单的使用中间件

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由半码博客整理,本文链接:https://www.bmabk.com/index.php/post/64007.html

(0)
小半的头像小半

相关推荐

半码博客——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!