MVC Turbine路线未注册

时间:2012-03-23 17:09:43

标签: turbine

我一直在设置一个与MVC Turbine一起运行的项目,并且在调用IRouteRegistrators时遇到了问题。我团队中的另一个人过去曾遇到过这个问题,但他不记得要解决这个问题需要做些什么。

设置的代码暂时都在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 个答案:

答案 0 :(得分:1)

检查项目生成的程序集的名称。 MVCTurbine在查找注册时按名称过滤掉一些程序集。如果程序集的名称包含以下任何内容,则不会检查路由。

  • 系统
  • 的System.Web
  • mscorlib程序
  • MvcTurbine,
  • MvcTurbine.Web,
  • Webdev的
  • CppCodeProvider

重命名程序集应该可以解决问题。