Asp.Net Core-中介軟體
在這一章,我們將了解如何設定中間件。中間件技術在 ASP.NET Core中控制我們的應用程式如何回應 HTTP 請求。它還可以控制應用程式的異常錯誤,這是在如何進行身份驗證和授權使用者執行特定的操作的關鍵。
中間件是組裝成應用的管道來處理請求和回應的軟體元件。
每個元件可以選擇是否要在管道中將請求傳遞到下一個元件,並且可以在管道中執行某些操作之前和之後的任務。
Request委託用於建置請求管道。 Request委託用來處理每個HTTP請求。
每個中間件在 ASP.NET Core都是一個對象,每一塊有非常具體、 專注和有限的作用。
最終,我們需要很多的中間件為應用程式提供適當的行為。
現在讓我們假設我們想將每個對我們應用程式的請求都記錄日誌。
在這種情況下,我們安裝到應用程式中的第一塊中間件是一個日誌元件。
這個日誌程式可以看到一切傳入的請求,然後該中間件只是記錄一些訊息,然後傳遞這個請求下一個區塊中間件。
中間件是以一系列的元件出現在這個處理管道中。
我們安裝到應用程式的下一個中間件是一個授權元件。
一個元件可能是尋找特定cookie或存取HTTP標頭中的令牌。
如果授權元件發現一個令牌,它允許請求繼續。
如果不是,授權元件本身可能會回應請求的HTTP錯誤代碼或將使用者重新導向到登入頁面。
否則,授權元件將請求傳遞給下一個路由器的中間件。
一個路由器查看URL,並決定下一步的行動。
路由器是在做一些回應,如果路由器沒有找到任何回應,路由器本身可能會回傳404 Not Found錯誤。
案例
現在讓我們透過一個簡單的例子來理解更多關於中間件的知識。我們透過使用我們的啟動類別的Configure方法來配置中間件組件。
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()方法内,我们将调用IApplicationBuilder接口的扩展方法来添加中间件。</startup>
預設情況下在一個新的空項目有兩個中間件-
IISPlatformHandler
#Middleware registered with app.Run
#IISPlatformHandler
IISPlatformHandler允許我們使用Windows驗證。它將著眼於每個傳入請求,看看是否有任何Windows身份資訊相關的請求,然後調用下一個區塊中間件。
Middleware registered with app.Run
在這種情況下一個中介軟體在app.Run中註冊的中間件。 Run方法允許我們傳入另一種方法,我們可以使用它來處理每一個回應。 Run方法不是你經常會看到的,我們可以稱它為一個中間件的終端。
你註冊運行的中間件將永遠不會有機會呼叫另一個中間件,它唯一能做的就是接收請求,便要產生某種反應。
你也訪問到一個回應物件,你可以在回應物件中加入一些字串。
如果你想在app.Run之後註冊另一個中間件,這段中間件將永遠不會被呼叫,因為Run方法是一個中間件的終端。它不會呼叫下一個區塊中間件。
如何新增一個中間件
讓我們著手進行以下步驟來新增另一個中間件 −
步驟1−右鍵點擊專案並選擇Manage NuGet Packages。
步驟2−搜尋 Microsoft.aspnet.diagnostics,此特定的軟體包包含許多不同種的中間件,我們可以使用。
步驟3−如果套件沒有安裝在您的專案中,那麼就選擇安裝這個套件。
步驟4−現在讓我們在Configure()方法呼叫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 − 運行您的應用程序,您將看到以下的歡迎畫面。
這個歡迎畫面可能沒那麼有用。
步驟6−讓我們試試別的東西,可能是更有用的,而不是使用歡迎頁面,我們將使用RuntimeInfoPage。
1 // This method gets called by the runtime. 2 // Use this method to configure the HTTP request pipeline. 3 public void Configure(IApplicationBuilder app) { 4 app.UseIISPlatformHandler(); 5 app.UseRuntimeInfoPage(); 6 7 app.Run(async (context) => { 8 var msg = Configuration["message"]; 9 await context.Response.WriteAsync(msg); 10 }); 11 }
第 7 步 − 儲存您的 Startup.cs 頁面並重新整理您的瀏覽器,您會看到下面的頁面。
這個 RuntimeInfoPage 是中間件,將只會回應一個特定的 URL 的請求。如果傳入的請求與該 URL 不匹配,這個中間件只是讓請求傳遞到下一件中間件。該請求將透過 IISPlatformHandler 中間件,然後轉到 UseRuntimeInfoPage 中間件。它不會創建響應,所以它會轉到我們的應用程式。運行並顯示該字串。
步驟8−我們在URL結尾加上「 runtimeinfo」。現在,您將看到一個頁面,該頁面是由中間件運行時資訊頁面。
你將看到一個返回頁面,它給你展示了一些關於你的運行時環境,如操作系統、運行時版本,結構,類型和您正在使用的所有包的資訊。
以上是asp.net core實例教學如何設定中間件的詳細內容。更多資訊請關注PHP中文網其他相關文章!

C#在企業級應用、遊戲開發、移動應用和Web開發中均有廣泛應用。 1)在企業級應用中,C#常用於ASP.NETCore開發WebAPI。 2)在遊戲開發中,C#與Unity引擎結合,實現角色控制等功能。 3)C#支持多態性和異步編程,提高代碼靈活性和應用性能。

C#和.NET適用於Web、桌面和移動開發。 1)在Web開發中,ASP.NETCore支持跨平台開發。 2)桌面開發使用WPF和WinForms,適用於不同需求。 3)移動開發通過Xamarin實現跨平台應用。

C#.NET生態系統提供了豐富的框架和庫,幫助開發者高效構建應用。 1.ASP.NETCore用於構建高性能Web應用,2.EntityFrameworkCore用於數據庫操作。通過理解這些工具的使用和最佳實踐,開發者可以提高應用的質量和性能。

如何將C#.NET應用部署到Azure或AWS?答案是使用AzureAppService和AWSElasticBeanstalk。 1.在Azure上,使用AzureAppService和AzurePipelines自動化部署。 2.在AWS上,使用AmazonElasticBeanstalk和AWSLambda實現部署和無服務器計算。

C#和.NET的結合為開發者提供了強大的編程環境。 1)C#支持多態性和異步編程,2).NET提供跨平台能力和並發處理機制,這使得它們在桌面、Web和移動應用開發中廣泛應用。

.NETFramework是一個軟件框架,C#是一種編程語言。 1..NETFramework提供庫和服務,支持桌面、Web和移動應用開發。 2.C#設計用於.NETFramework,支持現代編程功能。 3..NETFramework通過CLR管理代碼執行,C#代碼編譯成IL後由CLR運行。 4.使用.NETFramework可快速開發應用,C#提供如LINQ的高級功能。 5.常見錯誤包括類型轉換和異步編程死鎖,調試需用VisualStudio工具。

C#是一種由微軟開發的現代、面向對象的編程語言,.NET是微軟提供的開發框架。 C#結合了C 的性能和Java的簡潔性,適用於構建各種應用程序。 .NET框架支持多種語言,提供垃圾回收機制,簡化內存管理。

C#和.NET運行時緊密合作,賦予開發者高效、強大且跨平台的開發能力。 1)C#是一種類型安全且面向對象的編程語言,旨在與.NET框架無縫集成。 2).NET運行時管理C#代碼的執行,提供垃圾回收、類型安全等服務,確保高效和跨平台運行。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

禪工作室 13.0.1
強大的PHP整合開發環境

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

記事本++7.3.1
好用且免費的程式碼編輯器