2011-09-06 14 views
0

有一個MVC 2應用程序與缺省路由MVC2控制器不觸發默認操作時,URL指定唯一的目錄

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

這個偉大的工程,因爲我們有除了一個控制器的一切。當我們瀏覽到URL http:// myserver/ThisOneController它不會觸發Index操作並給出403.14禁止的錯誤。如果我衝浪到http:// myserver/ThisOneController/Index它工作正常!每個其他控制器顯示預期的行爲。

有問題的控制器有一個定義的索引操作方法,並且在IIS中查看該文件夾似乎沒有顯示該文件夾和其他文件夾之間的區別。它在我們的生產箱中工作,但不在我們的測試箱上......對於我的生活,我無法找到這些箱子之間的任何區別。

任何想法?

回答

1

Glimpse添加到您的項目並檢查正在使用什麼路線。然後,您可以找出問題出在您的MVC應用程序或環境中。

-1

這是預期的行爲。

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

上述路線的裝置,你還指望控制器/操作/ ID,默認(提供沒事的時候)是根/首頁/索引/。因此,任何其他帶有root/diffController/url的控制器都不匹配,因爲您提供的是控制器,但沒有任何操作。

+0

-1 - 這不完全正確;即使提供了部分路由,也會使用缺省值,所以'root/Home'將調用'HomeController.Index'動作,'root/Other'將調用'OtherController.Index'動作。您可以創建一個簡單的應用程序來確認。 –

相關問題