您看到此错误正是因为您不允许目录浏览。这向您显示的是 MVC 没有收到请求并且 IIS 正在尝试查找默认文档。 我过去回答过一个类似的问题,也许其中一些建议会帮助你发现你的问题
错误 403.14 是不允许列出目录内容的 HTTP 错误代码。请确保
- 您已将网站设置为 IIS 中的应用程序您已在服务器上安装了 .NET 4.5
- 您已将应用程序池设置为运行正确版本的 .NET 框架(即,它未设置为 .NET 2.0
- 您正在应用程序池 .NET 上使用集成管道
- 4.5实际上是在IIS中注册的。有关类似问题/解决方案,请参阅此帖子通常,a 和 d 是围绕 MVC 部署到 IIS 的最大问题
另外,检查您的 web.config 并确保此行存在:
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
更新
好吧,我当然没想到我的回答会受到如此多的关注……话虽如此,我可以在下面的对话中展开更多的讨论。DarinD 表示担心
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
是您的 Web 服务器的额外负担,他是正确的。此行将导致 IIS 为任何请求加载所有模块,包括静态文件。话虽如此,考虑到 IIS 7 的各个方面(例如内核缓存),除非您托管一个非常高流量的站点/拥有大量模块,否则您或您的用户很可能不会注意到性能影响。
如果您想查看可能不同的解决方案,请查看此博客文章以获取有关上面 managedModule 行的更多信息,您可以测试那里提出的解决方案是否也解决了您的问题。
最后,这是一篇博文,不仅涵盖了潜在的性能影响,还深入探讨了路由的工作原理以及在 IIS 6 和 7 上获取无扩展 URL 路由所需的操作(也应涵盖 7.5)