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中文網其他相關文章!