无动作URL生成HTTP 404(控制器和文件夹名称冲突)

时间:2014-09-18 04:17:19

标签: asp.net asp.net-mvc asp.net-mvc-4 http-status-code-404 url-routing

问题

我有两个控制器:RequestsControllerServicesController。两者都包含Index个动作。

当我浏览到/Requests时,它会自动运行Index操作,但对于/Services/Services/,它会在不运行{{1}的情况下提供HTTP 404行动。

背景

路线配置是库存。该项目还包含名为 Services 的顶级目录下的各种类:

enter image description here

疑难解答

问题似乎与Index和顶级ServicesController文件夹之间的某种命名冲突有关。

  • 我仍然可以毫无问题地访问Services
  • 当我未在网址中指定操作名称时,调试确认/Services/Index方法正在为Index而非Requests运行。
  • 重命名或删除顶级服务文件夹会导致问题停止发生。

1 个答案:

答案 0 :(得分:1)

我明白了。当您的控制器与根目录中的文件夹同名时,这是一个常见问题。假设Services文件夹中的所有文件都没有被StaticFilesHandler映射,我认为你可以简单地通过设置{告诉路由系统将所有“服务”路由映射到ServicesController。 {1}}到RouteExistingFiles ...

true

更新

我完全忽略了routes.RouteExistingFiles = true; 文件夹。您需要阻止对“Content”文件夹(或包含静态文件的任何其他文件夹,如Scripts文件夹)的请求通过路由管道,方法是在路由映射逻辑之前明确指定它...

Content