诊断 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 &lt;system.webServer&gt; 标签配置正确。

【讨论】:

谢谢,梅尔达德。原来 GoDaddy 将 IIS 7 默认设置为经典模式。

以上是关于诊断 IIS 7 和 ASP.NET MVC 上的 404 错误的主要内容,如果未能解决你的问题,请参考以下文章

IIS 7.5 上的 ASP.NET MVC

IIS 7.0 / Windows Server 2008 上的 ASP.NET MVC 3 应用程序出现 404.0 错误

如何使用 localDB 将 ASP.NET MVC 4 应用程序部署到 Windows 7 上的本地 IIS?

ASP.Net MVC 3/4 托管在 IIS 7.5 默认处理程序映射上

IIS6 上的 ASP.NET MVC

通过 AJAX POST 请求(IIS 7、ASP.NET MVC 4)向服务器传递大文件时出错