2012-03-23 52 views
1

我一直在建立一個項目,使用MVC Turbine運行,並且一直有問題讓IRouteRegistrators被調用。我團隊中的另一個人過去曾經遇到過這個問題,但他不記得要解決這個問題。MVC渦輪航線未註冊

設置的代碼暫時全部在Global.asax.cs文件中,直到完成爲止。我使用的代碼看起來與我見過的每個教程類似,但它包含在下面。

public class MvcApplication : TurbineApplication 
    { 
     static MvcApplication() 
     { 
     ServiceLocatorManager.SetLocatorProvider (() => new StructureMapServiceLocator()); 
     } 

     protected void Application_Start() 
     { 
     DeployDbMigrations(); 
     } 

     private void DeployDbMigrations() 
     { 
     ... 
     } 
    } 

    public class RouteRegistration : IRouteRegistrator 
    { 
     public void Register (RouteCollection routes) 
     { 
     routes.IgnoreRoute ("{resource}.axd/{*pathInfo}"); 

     routes.MapRoute (
      "Default", // Route name 
      "{controller}/{action}/{id}", // URL with parameters 
      new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
     ); 

     } 
    } 

正如我所說,IRouteRegistrator沒有被調用,所以當我去主頁,我會得到一個404,即使適當的控制器和視圖設置。

煩人的是我可以在當前的解決方案之外創建一個類似的項目,它會工作,但它不會在解決方案中工作。 (儘管我已經嘗試將工作項目複製到解決方案中並且工作正常,但是,這不再是一種選擇,因爲有人在Web項目中做了一些更多的工作,但我正在弄清楚這一點。)

有沒有人在過去遇到過這個問題,或者知道如何解決它?

回答

1

檢查您的項目生成的程序集的名稱。 MVCTurbine在查找註冊時按名稱篩選出一些組件。如果您的程序集名稱包含以下任何一項,則不會檢查路線。

  • 系統
  • 的System.Web
  • 的mscorlib
  • MvcTurbine,
  • MvcTurbine.Web,
  • Webdev的
  • CppCodeProvider

重命名大會應該可以解決問題。