首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

ASP.NET MVC 請求處理管線深度解析

     編輯:關於ASP.NET

理解 ASP.NET MVC 的請求執行流程,是進階開發、效能調優、自定義擴展的基石。本文梳理從 URL 輸入到控制器執行的完整管線。

核心入口:UrlRoutingModule 與 MvcHandler

  1. UrlRoutingModule (HTTP Module):攔截所有請求,依路由表匹配第一個符合的 Route 物件。
  2. 若無匹配路由,移交給傳統 ASP.NET/IIS 處理(如 .aspx、.ashx、靜態檔案)。
  3. 匹配成功後,從 Route 取得 IRouteHandler(預設為 MvcRouteHandler)。
  4. MvcRouteHandler 建立 IHttpHandler 實例(預設 MvcHandler),並傳入 HttpContext。
  5. MvcHandler 選擇 Controller、建立實例、調用執行方法。

執行階段總覽

MVC 請求執行階段圖

階段關鍵元件說明
路由匹配UrlRoutingModule, RouteTable將 URL 解析為 {controller}/{action}/{id}
處理器建立MvcRouteHandler, MvcHandler轉換為 MVC 專用的 HTTP 處理器
控制器工廠DefaultControllerFactory依命名慣例建立 Controller 實例
動作執行ControllerActionInvoker模型繫結、過濾器管線、動作方法調用、結果執行
視圖渲染ViewEngine, ViewResult定位視圖模板、執行 Razor/ASPX 引擎、輸出 HTML

關鍵擴展點

  • 自定義 RouteBase:實現特殊 URL 解析邏輯(如多租戶域名路由)。
  • IControllerFactory:整合 IoC 容器(Autofac, Unity)管理 Controller 生命週期。
  • ActionFilterAttribute:橫切關注點(授權、快取、日誌、異常處理)。
  • ViewEngine:替換預設 Razor/WebForms 引擎(如 Spark, NHaml)。

實戰啟示

掌握管線順序,才能正確編寫全域過濾器、自定義模型繫結器、或在 Application_BeginRequest 中植入跨域、重寫邏輯。下次遇到「為什麼我的 Filter 沒生效?」,請回來檢視執行順序:Authorization → Action → Result → Exception。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved