DotNet Core中间件使用方法

原创 Laughing  2017-08-28 16:11  阅读 419 次 评论 0 条

中间件用来处理应用程序管道中的请求以及响应的组件。每个中间件都可以决定是终止或者继续执行当前请求。

中间件的使用方法

IApplicationBuilder 通过UseRunMapMapWhen)三种方法调用中间件

三种方法的区别主要在于,Run会终止当前请求,也就是说Run必须是最后一个执行的,Run方法只包含一个参数。Use方法包含两个参数,第二个参数用来激活下一个中间件。Map方法包含两个参数,第一个参数是PathString代表要匹配的路径,第二个参数是要调用的方法。MapWhen与Map方法类似,只是第一个参数是一个返回bool值得委托,第二个方法是当第一个参数返回true时,要调用的方法。

Demo代码

  1. public void Configure(IApplicationBuilder app, IHostingEnvironment env)  
  2.       {  
  3.           app.Map("/map1", HandleMap1);  
  4.           app.Map("/map2", HandleMap2);  
  5.           app.MapWhen(context=>context.Request.Query.ContainsKey("branch"),HandleMapWhen);  
  6.           app.Run(async context =>  
  7.           {  
  8.               await context.Response.WriteAsync("Hello from non-Map delegate!");  
  9.           });  
  10.   
  11.           if (env.IsDevelopment())  
  12.           {  
  13.               app.UseDeveloperExceptionPage();  
  14.           }  
  15.           else  
  16.           {  
  17.               app.UseExceptionHandler("/Home/Error");  
  18.           }  
  19.   
  20.           app.UseStaticFiles();  
  21.           //app.UseResponseCompression();  
  22.           app.UseMvcWithDefaultRoute();  
  23.           app.UseMvc(routes =>  
  24.           {  
  25.               routes.MapRoute(  
  26.                   name: "default",  
  27.                   template: "{controller=Home}/{action=Index}/{id?}");  
  28.           });  
  29.       }  
  30.   
  31.       private static void HandleMap1(IApplicationBuilder app)  
  32.       {  
  33.           app.Run(async context =>  
  34.           {  
  35.               await context.Response.WriteAsync("HandleMap1");  
  36.           });  
  37.       }  
  38.       private static void HandleMap2(IApplicationBuilder app)  
  39.       {  
  40.           app.Run(async context =>  
  41.           {  
  42.               await context.Response.WriteAsync("HandleMap2");  
  43.           });  
  44.       }  
  45.       private static void HandleMapWhen(IApplicationBuilder app)  
  46.       {  
  47.           app.Run(async context =>  
  48.           {  
  49.               var val = context.Request.Query["branch"];  
  50.               await context.Response.WriteAsync($"{val}");  
  51.           });  
  52.       }  
本文地址:https://www.lisen.me/dotnet-core-middleware-using-method.html
版权声明:本文为原创文章,版权归 木子网 所有,欢迎分享本文,转载请保留出处!

发表评论


表情