欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

在ASP.NETCore中編寫中間件的示例分析-創(chuàng)新互聯(lián)

小編給大家分享一下在ASP.NET Core中編寫中間件的示例分析,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

為普陀等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及普陀網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為網(wǎng)站制作、成都網(wǎng)站建設(shè)、普陀網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

這篇文章探討了讓不同的請(qǐng)求去使用不同的中間件,那么我們應(yīng)該如何配置ASP.NET Core中間件?其實(shí)中間件只是在ASP.NET Core中處理Web請(qǐng)求的管道。所有ASP.NET Core應(yīng)用程序至少需要一個(gè)中間件來(lái)響應(yīng)請(qǐng)求,并且您的應(yīng)用程序?qū)嶋H上只是中間件的集合。當(dāng)然MVC管道本身就是中間件,早在WebForm時(shí)代就出現(xiàn)過(guò)HttpModules、HttpHandler、那個(gè)時(shí)候悠然記得我通過(guò)它們來(lái)組織我的廣告系統(tǒng),不閑扯我們繼續(xù)。

每個(gè)中間件組件都有一個(gè)帶有HttpContext參數(shù)的Invoke方法。您可以使用這個(gè)參數(shù)來(lái)處理方法。

public async Task Invoke(HttpContext context)
{
 if (context.Request.Path...)
 {
  await context.Response.WriteAsync("writing text...");
 }
}

應(yīng)用程序中最頂層的中間件將始終針對(duì)每個(gè)請(qǐng)求被調(diào)用。這是由.NET框架自動(dòng)完成的。中間件可以向客戶端發(fā)送響應(yīng),也可以調(diào)用下一個(gè)中間件。對(duì)于后一種選擇,它當(dāng)然需要訪問(wèn)下一個(gè)中間件組件。這就是為什么大多數(shù)中間件組件都是使用帶有RequestDelegate參數(shù)的構(gòu)造函數(shù)定義的。總之,RequestDelegate會(huì)自動(dòng)填充,您無(wú)需在意。

中間件在Startup.cs的Configure方法中注冊(cè)。Configure方法具有IApplicationBuilder參數(shù),該參數(shù)提供了所有類型的中間件注冊(cè)所需的方法,我們?cè)囍ゾ帉懸粋€(gè)中間件。

public class MyCustomMiddleware
 {
  private readonly RequestDelegate _next;
  public MyCustomMiddleware(RequestDelegate next)
  {
   _next = next;
  }
  public async Task Invoke(HttpContext context, IWebHostEnvironment env)
  {
   context.Response.Headers["app-name"] = env.ApplicationName+"Zaranet";
   context.Response.Headers["env-name"] = env.EnvironmentName+ "Zaranet";
   await _next(context);
  }
 }

隨后我們?cè)赟tartup.cs的Configure方法中通過(guò) use 來(lái)注冊(cè)自定義中間件。

public void Configure(IApplicationBuilder app, ...)
{
 app.UseMyCustomMiddleware();
}

啟動(dòng)程序我們發(fā)現(xiàn)一些正常,我們得到了我們想要的效果。

在ASP.NET Core中編寫中間件的示例分析

但實(shí)際上,您很少需要直接調(diào)用UseMiddleware,因?yàn)橹虚g件作者的標(biāo)準(zhǔn)方法是編寫特定于所注冊(cè)中間件的擴(kuò)展方法:

using MiddlerWareSolucation.MiddlerWare;
using Microsoft.AspNetCore.Builder;

namespace MiddlerWareSolucation.MiddlerWare_Extensions
{
 public static class MyCustomMiddlewareExtensions
 {
  public static IApplicationBuilder UseMyCustomMiddleware(this IApplicationBuilder app)
  {
   app.UseMiddleware<MyCustomMiddleware>();

   return app;
  }
 }
}

隨后直接調(diào)用Extensions擴(kuò)展方法,效果還是一樣的。

public void Configure(IApplicationBuilder app, ...)
{
 app.UseMyCustomMiddleware();
}

部分時(shí)候我們想要通過(guò)客戶端請(qǐng)求的路徑來(lái)對(duì)我們的中間件進(jìn)行啟動(dòng),當(dāng)然 MapWhen 允許您通過(guò)指定謂詞將中間件管道分成兩個(gè)完全獨(dú)立的分支:

app.UseMiddlewareOne();

app.MapWhen(context => context.Request.Path.StartsWithSegments("/api"), appBuilder =>
{
  appBuilder.UseMiddlewareTwo();
});

app.UseMiddlewareThree();

在此示例中,中間件One將始終執(zhí)行,如果請(qǐng)求路徑以“ / api”開(kāi)頭,則將執(zhí)行中間件Two。否則,將執(zhí)行中間件Three。使用這種配置,中間件2和中間件3都無(wú)法針對(duì)單個(gè)請(qǐng)求執(zhí)行。

我想說(shuō)的是最后一種情況是,您希望大多數(shù)中間件針對(duì)所有請(qǐng)求運(yùn)行,但是您有一些條件件-特定中間件僅應(yīng)針對(duì)某些請(qǐng)求運(yùn)行。

這可以通過(guò)UseWhen輕松實(shí)現(xiàn),UseWhen還使用謂詞來(lái)確定中間件是否應(yīng)該運(yùn)行:

app.UseWhen(context => context.Request.Path.StartsWithSegments("/api"), appBuilder =>
{
 appBuilder.UseStatusCodePagesWithReExecute("/apierror/{0}");

 appBuilder.UseExceptionHandler("/apierror/500");
});

看完了這篇文章,相信你對(duì)“在ASP.NET Core中編寫中間件的示例分析”有了一定的了解,如果想了解更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!

網(wǎng)頁(yè)名稱:在ASP.NETCore中編寫中間件的示例分析-創(chuàng)新互聯(lián)
本文來(lái)源:http://aaarwkj.com/article16/ppedg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開(kāi)發(fā)網(wǎng)站制作、網(wǎng)站排名、定制開(kāi)發(fā)、網(wǎng)站建設(shè)、企業(yè)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化
欧美一区二区欧美精品| 992免费影院 在线观看| 久久99精品久久久国产| 成年女人大片免费观看版| 国产又黄又粗的视频| 色婷婷亚洲综合色一区二区| 亚洲成年人黄片在线播放| 相泽南亚洲一区二区在线播放| 超碰欧美性欧美最猛性| 中文字幕日韩欧美一区| 日韩高清av一区二区三区 | 丝袜美腿蜜汁一龙二凤| 欧美特黄大片在线观看| 99热久久精品免费精品| 欧美日韩一级特黄大片| 校园春色亚洲一区二区| 日本不卡一区二区在线视频| 亚洲熟妇av乱码在线| 精品视频美女肉体亚洲| 欧美曰韩国内精品中文| 久久婷亚洲综合五月天| 国产怡红院在线视频观看| 天堂在线av免费观看| 欧美黄片视频免费观看| 在线蜜臀av中文字幕| 久久精品成人无码观看56| 精品人妻av区天天看片| 欧美一级黄色免费电影| 亚洲国产精品一区一区 | 日本在线视频精品一区| 香蕉视频在线观看亚洲精品| 青青草原网址在线观看| 中文字幕精品一区二区三区精品 | 99久久偷拍美女大白屁股| 成人福利网站午夜一区| 福利在线视频一区二区| 免费欧美一级黄片播放| 91中文在线观看一区| 日本一区二区三级在线观看| av 一区二区三区av| 99蜜桃臀成人美女视频|