诊断 IIS 7 和 ASP.NET MVC 上的 404 错误
Posted
技术标签:
【中文标题】诊断 IIS 7 和 ASP.NET MVC 上的 404 错误【英文标题】:Diagnosing 404 errors on IIS 7 and ASP.NET MVC 【发布时间】:2010-10-16 20:31:16 【问题描述】:我有一个使用 Cassini 开发和测试的 mvc 应用程序。部署到我在 GoDaddy 上的站点,默认页面正常。点击登录,我得到一个 404。
我在 IIS 7 下运行,所以这是出乎意料的。我的路线很简单:
routes.IgnoreRoute("resource.axd/*pathInfo");
routes.MapRoute(
"Default",
"controller/action/id",
new controller = "Public", action = "Index", id = ""
);
routes.MapRoute(
"Report1",
"Report/action/start/end",
new controller = "Report", action = "Index"
);
routes.MapRoute(
"Report2",
"Report/action/start/end/idList",
new controller = "Report", action = "Index"
);
知道可能发生了什么或如何解决此问题?
【问题讨论】:
【参考方案1】:Don't use runAllManagedModulesForAllRequests。您想让 IIS 处理图像等资源。
<system.webServer> <!-- Rather do NOT use this -->
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
改为添加 MVC 路由模块
<system.webServer>
<modules>
<remove name="UrlRoutingModule-4.0" />
<add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />
</modules>
</system.webServer>
【讨论】:
这个答案也有效,并且似乎有更有效(和优雅)的方法。 此方法在 ASP.NET Web API 应用程序中对我来说效果很好。该应用程序在本地运行良好,但当部署到任何其他环境时,我刚刚收到任何 Web API 请求的 404。添加了上面提到的路由模块位,一切都很好。类似问题:***.com/questions/15389855/…。谢谢! 我正在努力让 MVC 应用程序接受 HTTP DELETE 请求。这为我解决了问题。谢谢! 同样的问题,如果我部署到其他环境,方法删除请求不起作用:iis 8 ok 但在其他环境(iis 7)我得到 404【参考方案2】:我也遇到了同样的问题,我上传了控制器、web.config等类但是忘记上传bin文件夹了。
我上传 bin 文件夹后,它工作了!
【讨论】:
【参考方案3】:什么都试过了,我必须像这样设置我的网络配置,才能让它工作。
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
【讨论】:
哇这真的有效!但是为什么我感觉它会回来困扰我呢?【参考方案4】:您是否在 IIS7 集成模式下运行?
IIS7 的经典模式不会自动将无扩展名的 URL 映射到 ASP.NET(很像 IIS6)。
还要确保您的Web.config
<system.webServer>
标签配置正确。
【讨论】:
谢谢,梅尔达德。原来 GoDaddy 将 IIS 7 默认设置为经典模式。以上是关于诊断 IIS 7 和 ASP.NET MVC 上的 404 错误的主要内容,如果未能解决你的问题,请参考以下文章
IIS 7.0 / Windows Server 2008 上的 ASP.NET MVC 3 应用程序出现 404.0 错误
如何使用 localDB 将 ASP.NET MVC 4 应用程序部署到 Windows 7 上的本地 IIS?