ASP.NET:如何正确地重定向404错误的请求?

时间:2010-03-20 13:48:44

标签: asp.net iis error-handling

我希望我的ASP.NET MVC应用程序将失败的请求重定向到某个控制器的匹配操作方法。这在我运行Windows 7的开发计算机上运行良好,但在我运行Windows 2008 R2的生产计算机上却没有。

我按如下方式设置了我的web.config:

<customErrors mode="On" defaultRedirect="/Error/ServerError/500">       
            <error statusCode="403" redirect="/Error/AccessDenied" />
            <error statusCode="404" redirect="/Error/FileNotFound" />
</customErrors>

此customErrors部分可以在我的两台计算机(生产和开发)上正常运行500内部服务器错误。

它也适用于我的开发机器上的404错误。

但是,它无法在生产计算机上正确重定向404错误。而不是/ Error / FileNotFound,我得到了IIS 7附带的标准404页面。

这可能是什么问题?

2 个答案:

答案 0 :(得分:1)

如果其他人遇到同样的问题:解决方案是将httpErrors元素添加到system.webServer部分:

<httpErrors>
        <remove statusCode="404" subStatusCode="-1" />
        <error statusCode="404" prefixLanguageFilePath="" path="/Error/FileNotFound" responseMode="ExecuteURL" />
</httpErrors>

在Windows 2008 R2中,也可以通过IIS控制面板完成此操作(请参阅“错误页面”)。

答案 1 :(得分:1)

请参阅What is the difference between customErrors and httpErrors?

另见http://msdn.microsoft.com/en-us/library/ms690576.aspx

customErrors 与ASP.Net有关。 httpErrors 是IIS7的新功能(您在我假设的两个实例中都使用它)。

问题很可能与您的IIS Pipeline模式有关。也许你的产品可能在IIS Classic Pipeline Mode中运行?

修改

反过来说。在集成管道模式下,不使用 customErrors 标记。