什麼是 Middleware?
Middleware 是 ASP.NET Core 中請求處理管線的一部分。當一個 HTTP 請求進入應用程式時,它會依序通過一連串的 Middleware,每個 Middleware 可以:
- 處理請求(Request)
- 呼叫下一個 Middleware
- 處理回應(Response)
✅ Middleware 的用途包括:
- 驗證與授權
- Logging
- CORS 控制
- 錯誤處理
- 請求修改(如 URL Rewrite)
- 回應緩存、壓縮等
Middleware 的執行生命週期
- 請求進入時,Middleware 順序執行(如同鏈條)
- 若未呼叫
next()
,管線會在該點終止
- 處理完畢後,Middleware 以相反順序處理回應
請求與回應是「雙向通行」,Middleware 有機會攔截與修改兩邊的流程。
範例:使用內建 Middleware
在
Program.cs
或 Startup.cs
中設定:這些
UseXXX()
方法就是 Middleware 的註冊方式。建立自訂 Middleware
✅ 寫一個自訂 Middleware 類別:
✅ 在 Program.cs
中註冊:
Middleware 建立方式比較
方法 | 描述 |
app.Use() | 標準註冊 Middleware |
app.Run() | 終止請求管線,不能呼叫下一個 Middleware |
app.Map() | 根據路徑條件分支不同 Middleware |
範例:
執行順序會是:
Middleware 的注意事項
- 順序很重要:錯誤的順序可能導致功能失效(如在
UseRouting()
前使用UseAuthorization()
無效)
- 避免阻塞請求(如同步方法導致死鎖)
- 多用
async/await
提高效能