這篇文章主要介紹ASP.NET Core如何設(shè)置中間件,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
臨潼ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書(shū)銷(xiāo)售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書(shū)合作)期待與您的合作!Asp.Net Core-中間件
在這一章,我們將了解如何設(shè)置中間件。中間件技術(shù)在 ASP.NET Core中控制我們的應(yīng)用程序如何響應(yīng) HTTP 請(qǐng)求。它還可以控制應(yīng)用程序的異常錯(cuò)誤,這是一個(gè)在如何進(jìn)行身份驗(yàn)證和授權(quán)用戶執(zhí)行特定的操作的關(guān)鍵。
中間件是組裝成應(yīng)用的管道來(lái)處理請(qǐng)求和響應(yīng)的軟件組件。
每個(gè)組件可以選擇是否要在管道中將請(qǐng)求傳遞到下一個(gè)組件,并可以在管道中執(zhí)行某些操作之前和之后的任務(wù)。
Request委托用于構(gòu)建請(qǐng)求管道。Request委托用來(lái)處理每個(gè)HTTP請(qǐng)求。
每件中間件在 ASP.NET Core都是一個(gè)對(duì)象,并且每一塊有非常具體、 專注和有限的作用。
最終,我們需要很多的中間件為應(yīng)用程序提供適當(dāng)?shù)男袨椤?/p>
現(xiàn)在讓我們假設(shè)我們想將每個(gè)對(duì)我們應(yīng)用程序的請(qǐng)求都記錄日志。
在這種情況下,我們安裝到應(yīng)用程序中的第一塊中間件是一個(gè)日志組件。
這個(gè)日志程序可以看到一切傳入的請(qǐng)求,然后該中間件只是記錄一些信息,然后傳遞這個(gè)請(qǐng)求下一個(gè)塊中間件。
中間件是以一系列的組件出現(xiàn)在這個(gè)處理管道中。
我們安裝到應(yīng)用程序的下一個(gè)中間件是一個(gè)授權(quán)組件。
一個(gè)組件可能是尋找特定cookie或訪問(wèn)HTTP標(biāo)頭中的令牌。
如果授權(quán)組件發(fā)現(xiàn)一個(gè)令牌,它允許請(qǐng)求繼續(xù)。
如果不是,授權(quán)組件本身可能會(huì)響應(yīng)請(qǐng)求的HTTP錯(cuò)誤代碼或?qū)⒂脩糁囟ㄏ虻降卿涰?yè)面。
否則,授權(quán)組件將請(qǐng)求傳遞給下一個(gè)路由器的中間件。
一個(gè)路由器查看URL,并確定下一步的行動(dòng)。
路由器是在做一些回應(yīng),如果路由器沒(méi)有找到任何回應(yīng),路由器本身可能會(huì)返回404 Not Found錯(cuò)誤。
案例
現(xiàn)在讓我們通過(guò)一個(gè)簡(jiǎn)單的例子來(lái)理解更多關(guān)于中間件的知識(shí)。我們通過(guò)使用我們的啟動(dòng)類(lèi)的Configure方法來(lái)配置中間件組件。
using Microsoft.AspNet.Builder; using Microsoft.AspNet.Hosting; using Microsoft.AspNet.Http; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Configuration; namespace FirstAppDemo { public class Startup { public Startup() { var builder = new ConfigurationBuilder() .AddJsonFile("AppSettings.json"); Configuration = builder.Build(); } public IConfiguration Configuration { get; set; } // This method gets called by the runtime. // Use this method to add services to the container. // For more information on how to configure your application, // visit http://go.microsoft.com/fwlink/?LinkID=398940 public void ConfigureServices(IServiceCollection services) { } // This method gets called by the runtime. // Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app) { app.UseIISPlatformHandler(); app.Run(async (context) => { var msg = Configuration["message"]; await context.Response.WriteAsync(msg); }); } // Entry point for the application. public static void Main(string[] args) => WebApplication.Run<Startup>(args); } }
Configure()方法內(nèi),我們將調(diào)用IApplicationBuilder接口的擴(kuò)展方法來(lái)添加中間件。
默認(rèn)情況下在一個(gè)新的空項(xiàng)目有兩塊中間件-
IISPlatformHandler
Middleware registered with app.Run
IISPlatformHandler
IISPlatformHandler允許我們使用Windows身份驗(yàn)證。它將著眼于每個(gè)傳入請(qǐng)求,看看是否有任何Windows身份信息相關(guān)的請(qǐng)求,然后調(diào)用下一個(gè)塊中間件。
Middleware registered with app.Run
在這種情況下一個(gè)中間件在app.Run中注冊(cè)的中間件。Run方法允許我們傳入另一種方法,我們可以使用它來(lái)處理每一個(gè)響應(yīng)。Run方法不是你經(jīng)常會(huì)看到的,我們可以稱它為一個(gè)中間件的終端。
你注冊(cè)運(yùn)行的中間件將永遠(yuǎn)不會(huì)有機(jī)會(huì)調(diào)用另一個(gè)中間件,它能做的就是接收請(qǐng)求,便要產(chǎn)生某種反應(yīng)。
你也訪問(wèn)到一個(gè)響應(yīng)對(duì)象,你可以在響應(yīng)對(duì)象中添加一些字符串。
如果你想在app.Run之后注冊(cè)另一個(gè)中間件,這段中間件將永遠(yuǎn)不會(huì)被調(diào)用,因?yàn)镽un方法是一個(gè)中間件的終端。它不會(huì)調(diào)用下一個(gè)塊中間件。
如何添加一個(gè)中間件
讓我們著手進(jìn)行以下步驟來(lái)添加另一個(gè)中間件 ?
步驟1?右鍵單擊項(xiàng)目并選擇Manage NuGet Packages。
步驟2?搜索 Microsoft.aspnet.diagnostics,此特定的軟件包包含許多不同種的中間件,我們可以使用。
步驟3?如果該包沒(méi)有安裝在您的項(xiàng)目中,那選擇安裝這個(gè)包。
步驟4?現(xiàn)在讓我們?cè)贑onfigure()方法調(diào)用app.UseWelcomePage中間件。
// This method gets called by the runtime. // Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app) { app.UseIISPlatformHandler(); app.UseWelcomePage(); app.Run(async (context) => { var msg = Configuration["message"]; await context.Response.WriteAsync(msg); });
步驟 5 ? 運(yùn)行您的應(yīng)用程序,您將看到以下的歡迎屏幕。
這個(gè)歡迎屏幕可能不是那么有用。
步驟6?讓我們?cè)囋噭e的東西,可能是更有用的,而不是使用歡迎頁(yè)面,我們將使用RuntimeInfoPage。
// This method gets called by the runtime. // Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app) { app.UseIISPlatformHandler(); app.UseRuntimeInfoPage(); app.Run(async (context) => { var msg = Configuration["message"]; await context.Response.WriteAsync(msg); }); }
第 7 步 ? 保存您的 Startup.cs 頁(yè)面并刷新您的瀏覽器,你會(huì)看到下面的頁(yè)面。
這個(gè) RuntimeInfoPage 是中間件,將只響應(yīng)一個(gè)特定的 URL 的請(qǐng)求。如果傳入的請(qǐng)求與該 URL 不匹配,這個(gè)中間件只是讓請(qǐng)求傳遞到下一件中間件。該請(qǐng)求將通過(guò) IISPlatformHandler 中間件,然后轉(zhuǎn)到 UseRuntimeInfoPage 中間件。它不會(huì)創(chuàng)建響應(yīng),所以它會(huì)轉(zhuǎn)到我們的應(yīng)用程序。運(yùn)行并顯示該字符串。
步驟8?我們?cè)赨RL結(jié)尾添加“ runtimeinfo”?,F(xiàn)在,您將看到一個(gè)頁(yè)面,該頁(yè)面是由中間件運(yùn)行時(shí)信息頁(yè)面。
你將看到一個(gè)返回頁(yè)面,它給你展示了一些關(guān)于你的運(yùn)行時(shí)環(huán)境,如操作系統(tǒng)、運(yùn)行時(shí)版本,結(jié)構(gòu),類(lèi)型和您正在使用的所有包的信息。
以上是“ASP.NET Core如何設(shè)置中間件”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
網(wǎng)頁(yè)標(biāo)題:ASP.NETCore如何設(shè)置中間件-創(chuàng)新互聯(lián)
鏈接URL:http://jinyejixie.com/article18/ccjjgp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、Google、靜態(tài)網(wǎng)站、面包屑導(dǎo)航、網(wǎng)頁(yè)設(shè)計(jì)公司、外貿(mào)建站
聲明:本網(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)
猜你還喜歡下面的內(nèi)容