溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ASP.NET中如何使用Middleware組件

發(fā)布時間:2021-07-16 14:32:51 來源:億速云 閱讀:119 作者:Leah 欄目:大數(shù)據(jù)

這篇文章給大家介紹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組件就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。

AI