ASP.NET MVC 404处理和IIS7 <httpErrors>

美好的一天!

我使用策略来处理404错误,如下所示:ASP.NET MVC 2和IIS 7.0或以下错误处理:如何在ASP.NET MVC中正确处理404?

简而言之:在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。

这可能是原因吗?


看来我已经通过在Web.config设置来解决它:

<httpErrors existingResponse="PassThrough" />
链接地址: http://www.djcxy.com/p/74345.html

上一篇: ASP.NET MVC 404 handling and IIS7 <httpErrors>

下一篇: Logging errors in ASP.NET MVC