MVC2控制器不触发默认操作时,URL指定唯一的目录

问题描述:

有一个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中查看该文件夹似乎没有显示该文件夹和其他文件夹之间的区别。它在我们的生产箱中工作,但不在我们的测试箱上......对于我的生活,我无法找到这些箱子之间的任何区别。

任何想法?

Glimpse添加到您的项目并检查正在使用什么路线。然后,您可以找出问题出在您的MVC应用程序或环境中。

这是预期的行为。

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'动作。您可以创建一个简单的应用程序来确认。 –