Asp.Net Core-中間件
在這一章,我們將了解如何設置中間件。中間件技術在 ASP.NET Core中控制我們的應用程序如何響應 HTTP 請求。它還可以控制應用程序的異常錯誤,這是一個在如何進行身份驗證和授權用戶執(zhí)行特定的操作的關鍵。
現在讓我們假設我們想將每個對我們應用程序的請求都記錄日志。
案例
現在讓我們通過一個簡單的例子來理解更多關于中間件的知識。我們通過使用我們的啟動類的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接口的擴展方法來添加中間件。
默認情況下在一個新的空項目有兩塊中間件-
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。
// 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 頁面并刷新您的瀏覽器,你會看到下面的頁面。
這個 RuntimeInfoPage 是中間件,將只響應一個特定的 URL 的請求。如果傳入的請求與該 URL 不匹配,這個中間件只是讓請求傳遞到下一件中間件。該請求將通過 IISPlatformHandler 中間件,然后轉到 UseRuntimeInfoPage 中間件。它不會創(chuàng)建響應,所以它會轉到我們的應用程序。運行并顯示該字符串。
步驟8−我們在URL結尾添加“ runtimeinfo”。現在,您將看到一個頁面,該頁面是由中間件運行時信息頁面。
你將看到一個返回頁面,它給你展示了一些關于你的運行時環(huán)境,如操作系統(tǒng)、運行時版本,結構,類型和您正在使用的所有包的信息。
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com