C# 当url仅指定目录时,Mvc2控制器未触发默认操作

C# 当url仅指定目录时,Mvc2控制器未触发默认操作,c#,asp.net-mvc,asp.net-mvc-2,C#,Asp.net Mvc,Asp.net Mvc 2,拥有具有默认路线的MVC 2应用程序: routes.MapRoute( "Default", "{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = "" } ); 除了一个控制器之外,这对我们所有的东西都非常有效。当我们浏览到url时http://myserver/ThisOneController 它不会触发索引操作,并给出403.14禁止的错误。如果我冲浪到http://

拥有具有默认路线的MVC 2应用程序:

routes.MapRoute(
  "Default",
  "{controller}/{action}/{id}",
  new { controller = "Home", action = "Index", id = "" }
);
除了一个控制器之外,这对我们所有的东西都非常有效。当我们浏览到url时http://myserver/ThisOneController 它不会触发索引操作,并给出403.14禁止的错误。如果我冲浪到http://myserver/ThisOneController/Index 很好用!其他每个控制器都显示预期的行为

有问题的控制器定义了索引操作方法,在IIS中查看文件夹似乎与其他文件夹没有区别。它在我们的生产箱中工作,但在我们的测试箱中不起作用……就我个人而言,我找不到这些箱子之间的任何区别


有什么想法吗?

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

这是预期的行为

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

上面的路由意味着,您需要一个控制器/action/id,默认(当没有提供任何内容时)是root/Home/Index/。因此,url为root/diffController/的任何其他控制器都不匹配,因为您提供了一个控制器,但没有任何操作

-1-这不完全正确;即使提供了路由的某些部分,也会使用默认值,因此
root/Home
将调用
HomeController.Index
操作,
root/Other
将调用
OtherController.Index
操作。您可以创建一个简单的应用程序来确认这一点。