1

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プロジェクトでさらに作業を行ったため、これはオプションではなくなりました。)

誰かが過去にこの問題に遭遇したことがありますか、および/またはそれを修正する方法を知っていますか?

4

1 に答える 1

1

プロジェクトによって生成されたアセンブリの名前を確認します。MVCTurbine は、登録を探すときに、一部のアセンブリを名前で除外します。アセンブリの名前に次のいずれかが含まれている場合、ルートはチェックされません。

  • システム
  • System.Web
  • mscorlib
  • Mvcタービン、
  • MvcTurbine.Web、
  • ウェブ開発
  • CppCodeProvider

アセンブリの名前を変更すると、問題が修正されます。

于 2012-03-26T18:31:36.637 に答える