7

我知道這個錯誤已經出現在人們面前,但這似乎有點特殊情況。「路由表中沒有路由與提供的值匹配」當使用區域

我一直在努力在ASP.NET MVC 4之上設置一個帶有ReactJS的SPA。我在使用我的機器時沒有任何問題。然而,我看到的奇怪問題是,它不適用於其他開發者的任何其他機器。據我所見,我沒有任何在源代碼控制下沒有簽入的文件。我已經使用了RouteDebugger,並且看到了正確的路線。

我用於此SPA的路線是/ V2/Home。所以我有一個名爲「V2」的區域,一個名爲「HomeController」的區域中的MVC控制器,它有一個名爲「Index」的視圖。我在V2AreaRegistration中設置了一個catchall。

public override void RegisterArea(AreaRegistrationContext context) 
{ 
    context.MapRoute(
     "V2_default", 
     "V2/{*url}", 
     new { area = "V2", controller = "Home", action = "Index" } 
    ); 
} 

這裏的Application_Start在Global.asax.cs中

protected void Application_Start() 
{ 
    AreaRegistration.RegisterAllAreas(); 

    GlobalConfiguration.Configure(WebApiConfig.Register);   
    FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 
    RouteConfig.RegisterRoutes(RouteTable.Routes); 
    BundleConfig.RegisterBundles(BundleTable.Bundles); 
    AuthConfig.RegisterAuth(); 

    AutoMapperConfiguration.Configure(); 
    Logger.Info("Application started"); 

    GlobalConfiguration.Configuration.EnsureInitialized(); 
} 

我已經得到了絕對行不通的與此有關。我很樂意解決這個問題。隨時要求任何遺漏。

+0

你有HomeController在你的主站點?如果是這樣,您將需要使用MapRoute的名稱空間參數指定要在此處使用的名稱空間,否則MVC將不知道要使用哪個「HomeController」。要麼,要麼改名爲V2HomeController或類似的東西。 –

+0

乾淨地簽出到您計算機上的另一個文件夾並嘗試運行該站點,或者使用類似WinMerge的東西來比較目錄。 –

+0

@TiesonT。我已經完成了,並且它仍然可以在我的機器上正常工作 – SnareHanger

回答

2

我不確定它到底是什麼,但我設法解決了我的問題。這與我們如何處理路由和身份驗證/權限有關。

+0

您是否使用授權屬性裝飾索引?或者一個認證過濾器? –

+1

@DaveAlperovich認證過濾器。另一個自定義屬性,但我現在不在代碼前面。 – SnareHanger

1

我無法解釋這將如何在你的機器上工作,但不是你的同事機器。

它看起來像你的區域登記的,不知道什麼名稱空間的控制器住在嘗試添加第四個參數來聲明你的新控制器的命名空間中的MapRoute方法調用:

public override void RegisterArea(AreaRegistrationContext context) 
{ 
    context.MapRoute(
     "V2_default", 
     "V2/{*url}", 
     new { area = "V2", controller = "Home", action = "Index" }, 
     new string[] { "MyApplication.MyMvcProject.Areas.Controllers" } // Change this to the namespace of your area controllers. 
    ); 
} 
+0

我在那裏有名字空間。我認爲現在這一切都已經解決了。謝謝 – SnareHanger

相關問題