2011-12-23 85 views
1

我添加了一個控制器到我的項目命名的UserManager(從ado.net框架自動生成)控制器沒有正確激活

當我啓動應用程序,嘗試導航到http://server/UserManager/都遇到了一個404錯誤,但如果我去http://server/UserManager/Index該行爲被發現並正確執行。

這是控制器沒有被調用的情況,或者它只是不把索引當作默認操作。這些屬性在哪裏設置?

UPDATE

看來,從默認路由設置爲

"Default", // Route name 
"{controller}/{action}/{id}", // URL with parameters 
new { controller = "Permits", action = "ListApplications", id = UrlParameter.Optional } 

這種衝突與的UserManager命名方案(其中默認爲指數)的事實產生的問題

我掙扎着用ohow添加提供默認動作的備用路由,但最終發現路由添加的順序決定了哪個路由接受請求(th E更早地路由加入,更多的機會是必須滿足的標準)

感謝

回答

2

您需要確保默認路由映射指定「Index」作爲global.asax文件中的默認操作。

檢查您是否具有以下設置在Global.asax文件:

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

在回答您的評論:

只有通過增加新航線的映射方式。您還需要知道第一個匹配的路由映射將被應用,因此您在Global.asax中指定映射的順序至關重要。
例如,我們希望我們的常見問題解答控制器與一個URL http://domain/faq/(編號),而不在URL指定的操作工作,所以我們宣佈違約前以下映射:

routes.MapRoute("Faq", "Faq/{id}", new { controller = "Faq", action = "Answer" }); 
+0

好吧,這是有道理的,是有一種方法可以爲不同的控制器指定不同的默認操作? – lostinplace

+0

看到我編輯的答覆 –

1

在Global.asax.cs中,檢查默認路由設置:

routes.MapRoute(
    "Default", 
    "{controller}/{action}/{id}", new { 
     controller = "Home", 
     action = "Index", 
     id = UrlParameter.Optional} 
); 

而且,請檢查控制器是否被稱爲UserManagerController,並且源自Controller