您好,登錄后才能下訂單哦!
這篇文章給大家介紹ASP.NET中如何使用Middleware組件,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
ASP.NET Core引入了中間件(middleware)的概念來定義HTTP 管道(pipeline)。中間件是一系列組合在一起形成web應用程序的組件。這個概念的靈感來源于OWIN和Katana,在ASP.NET早期版本中也提供了類似的功能。
一個中間件是HTTP 管道中的一個組件。中間件逐個執(zhí)行,并在管道中鏈式地調用下一個中間件。每個中間件都可以終止調用鏈。例如,如果認證過程失敗,則認證中間件不會再執(zhí)行下一個中間件。下圖說明了執(zhí)行流程。
除了ASP.NET Core中內置的中間件,我們也可以創(chuàng)建新的中間件。如果需要自定義中間件,可以編寫一個類,該類中必須包含以HttpContext作為第一個參數(shù)的方法。這個方法允許增加其他參數(shù),可以通過依賴注入進行解析。下面的類定義了一個日志中間件:
public class RequestLoggerMiddleware { private readonly RequestDelegate _next; private readonly ILogger _logger; public RequestLoggerMiddleware(RequestDelegate next, ILoggerFactory loggerFactory) { _next = next; _logger = loggerFactory.CreateLogger(); } public async Task Invoke(HttpContext context) { _logger.LogInformation("Handling request: " + context.Request.Path); await _next.Invoke(context); _logger.LogInformation("Finished handling request."); } }
中間件必須在Startup類的Configure方法中進行注冊才可以執(zhí)行。
public void Configure(IApplicationBuilder app) { app.UseMiddleware(); }
一點需要注意的是,中間件的執(zhí)行順序依賴于它們添加到管道中的順序。這就意味著必須花費一些精力確定中間件之間隱含的依賴關系。例如,一個組件要使用會話狀態(tài),但是如果它在會話中間件之前執(zhí)行,則會導致崩潰。
伴隨著ASP.NET Core“為你所用的資源付費”的理念,一些應用程序的性能可能會有所改善,因為只有明確配置的中間件才會執(zhí)行。該框架不再依賴于System.Web.dll;組件將以NuGet包的形式提供。這也意味著組件的更新將由NuGet負責處理,并且每個中間件均可獨立更新。
關于ASP.NET中如何使用Middleware組件就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。