2010-09-12 404 views
1

DefaultControllerFactory包含三種不同的方法:ASP.NET MVC控制器廠生命週期

  1. GetControllerInstance
  2. CreateController
  3. GetControllerType

是每種方法在請求執行壽命何時?我見過自定義控制器工廠,其中的一個方法被覆蓋並實現,但我似乎無法找到每個執行路徑的細節。

回答

2

CreateController被調用。
它首先調用GetControllerType來確定控制器的類型,然後將此類型傳遞給GetControllerInstance

因爲它更容易(並且通常足夠)(僅)覆蓋GetControllerInstance(以便選擇類型的邏輯保持不變),所以通常會發生這種情況。

1

更新MVC3,方法按此順序調用。

GetControllerType被首先調用並被調用兩次。

  1. GetControllerType
  2. GetControllerSessionBehavior
  3. CreateController
  4. GetControllerType
  5. CreateControllerInstance
  6. ReleaseController