C# ASP.NET Core 中介軟體與 HttpModule 的區別


HttpModule 透過 web.config 或 global.asax 配置,開發者無法控制執行順序。

由於模組的順序主要基於應用程式生命週期事件,因此請求和響應的執行順序保持不變。

HttpModule 幫助您將特定於應用程式事件的程式碼附加到應用程式事件。HttpModule 與 System.web 繫結。

中介軟體在 Startup.cs 程式碼中配置,而不是 web.config 檔案(應用程式的入口點)。

與 HttpModule 不同,可以完全控制執行的內容和順序,因為它們按照新增的順序執行。

響應的中介軟體順序與請求的中介軟體順序相反。

中介軟體獨立於這些事件。

中介軟體與主機無關。

Asp.Net Core 的內建中介軟體

身份驗證    提供身份驗證支援。

CORS                  配置跨域資源共享。

路由                定義和約束請求路由。

會話              提供對管理使用者會話的支援。

診斷        包括對錯誤頁面和執行時資訊的 支援。

示例

public class MyMiddleware{
   private readonly RequestDelegate _next;
   private readonly ILogger _logger;
   public MyMiddleware(RequestDelegate next, ILoggerFactory logFactory){
      _next = next;
      _logger = logFactory.CreateLogger("MyMiddleware");
   }
   public async Task Invoke(HttpContext httpContext){
      _logger.LogInformation("MyMiddleware executing..");
      await _next(httpContext); // calling next middleware
   }
}

// 用於將中介軟體新增到 HTTP 請求管道的擴充套件方法。

public static class MyMiddlewareExtensions{
   public static IApplicationBuilder UseMyMiddleware(this IApplicationBuilder
   builder){
      return builder.UseMiddleware<MyMiddleware>();
   }
}

// 使用 Use 擴充套件方法,如下所示,在請求管道中新增自定義中介軟體

public void Configure(IApplicationBuilder app, IHostingEnvironment env){
   app.UseMiddleware<MyMiddleware>()
   app.Run(async (context) =>{
      await context.Response.WriteAsync("Hello World!");
   });
}

更新於:2020年9月25日

998 次瀏覽

開啟您的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.