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

art*_*olk 8 asp.net-mvc iis-7 iis-6 asp.net-mvc-2

美好的一天!

我使用策略来处理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>
Run Code Online (Sandbox Code Playgroud)

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

提前致谢!

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

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

这可能是原因吗?

art*_*olk 11

我似乎已通过设置修复它Web.config:

<httpErrors existingResponse="PassThrough" />
Run Code Online (Sandbox Code Playgroud)

  • 我知道它有点晚了,但是我用MVC3做的是使用exisitingResponse ="Replace" (2认同)