了解 MVC 應用程序執行過程
[注意:本主題是預發布的文檔,在將來發布的版本中可能會有更改。空白主題是為將來預留的。]
發送給基於 ASP.NET MVC 的 Web 應用程序的請求首先通過 UrlRoutingModule 對象(一個 HTTP 模塊)進行傳遞。此模塊將分析請求並執行路由選擇。UrlRoutingModule 對象將選擇與當前請求匹配的第一個路由對象。(路由對象是實現 RouteBase 的類,並且通常是 Route 類的實例。)如果任何路由都不匹配,則 UrlRoutingModule 對象不執行任何操作,並允許請求回退到常規的 ASP.NET 或 IIS 請求處理流程。
從選定的 Route 對象中,UrlRoutingModule 對象將獲得一個對象,所獲得的對象將實現 IRouteHandler 介面並與 Route 對象關聯。通常,在 MVC 應用程序中,這將是 MvcRouteHandler 類的一個實例。MvcRouteHandler 實例將創建一個實現 IHttpHandler 介面的 MvcHandler 對象。然後,MvcHandler 對象會選擇將最終處理該請求的控制器。有關更多信息,請參見 ASP.NET 路由。
說明 |
---|
如果 ASP.NET MVC Web 應用程序運行在 IIS 7.0 中,則 MVC 項目不需要文件擴展名。但是,在 IIS 6.0 中,處理程序要求將 .mvc 文件擴展名映射到 ASP.NET ISAPI DLL。 |
UrlRoutingModule 和 MvcRouteHandler 類是 ASP.NET MVC 框架的入口點。它們執行下列操作:
選擇 MVC Web 應用程序中合適的控制器。
獲取特定的控制器實例。
調用該控制器的 Execute 方法。
下表列出了 MVC Web 項目的執行階段。
階段 |
詳細信息 |
---|---|
接收對應用程序的第一個請求 |
在 Global.asax 文件中,Route 對象將添加到 RouteTable 對象中。 |
執行路由 |
UrlRoutingModule 模塊使用 RouteTable 集合中第一個匹配的 Route 對象來創建 RouteData 對象,然後使用所創建的對象創建 RequestContext 對象。 |
創建 MVC 請求處理程序 |
MvcRouteHandler 對象將創建 MvcHandler 類的實例,並將 RequestContext 實例傳遞給處理程序。 |
創建控制器 |
MvcHandler 對象使用 RequestContext 實例標識用於創建控制器實例的 IControllerFactory 對象(通常是 DefaultControllerFactory 類的實例)。 |
執行控制器 |
MvcHandler 實例調用控制器的 Execute 方法。 |
調用操作 |
對於從 ControllerBase 類繼承的控制器,與該控制器關聯的 ControllerActionInvoker 對象將決定要調用的 controller 類的操作方法,然後調用該方法。 |
執行結果 |
操作方法將接收用戶輸入,準備合適的響應數據,然後通過返回結果類型來執行結果。可執行的內置結果類型包括:ViewResult(呈現視圖並且是最常用的結果類型)、RedirectToRouteResult、RedirectResult、ContentResult、JsonResult、FileResult 和 EmptyResult。 |
請參見
概念
ASP.NET 路由
其他資源
ASP.NET MVC 概述
推薦閱讀:
※民訴二審應增設簡易程序的規定
※C++中如何把一個變數的值作為另一個變數的名?
※你只管努力,剩下的交給時光---一個南方姑娘的2016北漂之旅
※有哪些動漫作品是與編程有關的?
※為什麼單機遊戲的啟動時間一般都比較長?有沒有辦法進行縮短?