ASP.NET MVC 404处理和IIS7 <httperrors> </httperrors>

时间:2010-08-24 08:52:58

标签: asp.net-mvc asp.net-mvc-2 iis-7 iis-6

美好的一天!

我使用策略来处理404错误:Error handling for ASP.NET MVC 2 and IIS 7.0或者:How can I properly handle 404 in ASP.NET MVC?

简而言之:我在Global.asax中将404作为异常处理而不添加任何路由规则,如果异常是404我将使用错误消息呈现特殊控制器\动作。

在IIS6上,它适用于ASP.NET通配符映射。在集成模式的IIS7上,我需要将以下内容添加到Web.config(其中/error/HttpError404是我的操作404页面):

    <httpErrors>
        <remove statusCode="403" subStatusCode="-1" />
        <remove statusCode="404" subStatusCode="-1" />
        <error statusCode="404" prefixLanguageFilePath="" path="/error/HttpError404" responseMode="ExecuteURL" />
        <error statusCode="403" prefixLanguageFilePath="" path="/error/HttpError403" responseMode="ExecuteURL" />
    </httpErrors>

为什么呢?路由在IIS集成模式和IIS6通配符映射上的工作方式不同?

提前致谢!

更新 根据我的测试,似乎我的错误处理工作,我的404操作呈现,但似乎IIS看到404响应代码(我在404操作中以编程方式设置)并用默认错误替换我的页面。

当我设置<httpErrors>时,我有两个点击404页面:一个来自Global.asax中的异常处理,另一个来自IIS。

这可能是原因吗?

1 个答案:

答案 0 :(得分:11)

似乎我已通过设置Web.config

修复了它
<httpErrors existingResponse="PassThrough" />
相关问题