首頁  >  文章  >  後端開發  >  C# ASP.NET Core 中介軟體與 HttpModule 有何不同?

C# ASP.NET Core 中介軟體與 HttpModule 有何不同?

PHPz
PHPz轉載
2023-08-28 10:21:10608瀏覽

C# ASP.NET Core 中间件与 HttpModule 有何不同?

HttpModules 透過 web.config 或 global.asax 配置 開發人員無法控制執行順序。

因為模組的順序主要基於應用程式生命週期事件。 請求和回應的執行順序保持相同。

HttpModules 可協助您附加特定於應用程式事件的程式碼。 HttpModules 綁定到 System.web。

中間件在 Startup.cs 程式碼中配置,而不是 web.config 檔案(入口點 對於應用程式)

與 HttpModule 不同,可以完全控制 get 的執行內容以及執行順序。作為 它們按照添加的順序執行。

中間件回應的順序與請求的順序相反。

中間件獨立於這些事件。

中間件獨立於主機。

內建 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>();
   }
}

//透過使用擴充方法as在請求管道中新增自訂中間件 如下圖

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

以上是C# ASP.NET Core 中介軟體與 HttpModule 有何不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除