理解 ASP.NET MVC 的請求執行流程,是進階開發、效能調優、自定義擴展的基石。本文梳理從 URL 輸入到控制器執行的完整管線。
IRouteHandler(預設為 MvcRouteHandler)。MvcRouteHandler 建立 IHttpHandler 實例(預設 MvcHandler),並傳入 HttpContext。MvcHandler 選擇 Controller、建立實例、調用執行方法。
| 階段 | 關鍵元件 | 說明 |
|---|---|---|
| 路由匹配 | UrlRoutingModule, RouteTable | 將 URL 解析為 {controller}/{action}/{id} |
| 處理器建立 | MvcRouteHandler, MvcHandler | 轉換為 MVC 專用的 HTTP 處理器 |
| 控制器工廠 | DefaultControllerFactory | 依命名慣例建立 Controller 實例 |
| 動作執行 | ControllerActionInvoker | 模型繫結、過濾器管線、動作方法調用、結果執行 |
| 視圖渲染 | ViewEngine, ViewResult | 定位視圖模板、執行 Razor/ASPX 引擎、輸出 HTML |
掌握管線順序,才能正確編寫全域過濾器、自定義模型繫結器、或在 Application_BeginRequest 中植入跨域、重寫邏輯。下次遇到「為什麼我的 Filter 沒生效?」,請回來檢視執行順序:Authorization → Action → Result → Exception。