2021年3月21日 星期日

ASP.NET Core 3.1 新增 Middleware 的順序

在微軟官網有提供建議 Middleware 加入的順序,由於設定也需要一些細節,

就順手紀錄一下,避免煩心。


由於 Middleware 是由一連串的委派串接,預設正常情形下會是一個接著一個執行

下去,故透過以下的圖片更能理解



由上圖可看出,自訂的 Middleware 建議會是在 Authorication(授權) 之後,即 Custome 

middleware 區塊,而ExceptionHandlerMiddleware 則是建議 Pipeline 一開始的時候

就加入,主要是因為若後續的 Middleware 有例外發生時,是可以攔截的到錯誤的;

當 Request 走到 Endpoint 時,訊息流就會轉向 Response,同樣一層層傳出。


提醒一下,若 Endpoint 是 MVC 模式,則 ActionFilter 同樣遵循原本 asp.net mvc 的

機制。可參考下圖


以下列出程式碼的順序,僅供參考,由於程式有點長所以切成兩張


有幾點需要注意

兩個驗證的 Middleware 中 app.UseAuthentication()、app.UseAuthorization()

需要在 ConfigureServices 方法中加入對應的Service


還有若有使用 Session Middleware ,同樣需要注入 Service ,如下圖,

是的的它需要連 DistributedMemoryCache 一起加入


最後是在 UseEndpoints 中,若使用 MapControllers ,則需要注入 Controllers


順帶一提 Endpoints 同樣可以加入其他路由,如MVC 路由或 RazorPage 路由

等等,可參考下圖,而這些路由也需要注入對應的 Service,這邊就不一一列出

沒有留言:

張貼留言