这个问题一直令人头疼。前面提到的所有建议都没有一个能为我解决,因此,我将其包括在内。作为记录,我们的环境/平台使用:
- .NET Framework 4
- MVC 3
- IIS8(工作站)和IIS7(Web服务器)
具体来说,我试图获取HTTP 404响应,该响应会将用户重定向到我们的自定义404页面(通过Web.config设置)。
首先,我的代码必须抛出HttpException
。NotFoundResult
从控制器返回a 并没有达到我想要的结果。
throw new HttpException(404, "There is no class with that subject");
然后,我不得不配置都将customErrors
和httpError
在Web.config节点。
<customErrors mode="On" defaultRedirect="/classes/Error.aspx">
<error statusCode="404" redirect="/classes/404.html" />
</customErrors>
...
<httpErrors errorMode="Custom" existingResponse="Auto" defaultResponseMode="ExecuteURL">
<clear />
<error statusCode="404" path="/classes/404.aspx" responseMode="ExecuteURL" />
</httpErrors>
请注意,我留下了existingResponse
as Auto
,这与提供的@sefl解决方案不同。
该customErrors
设置似乎是必要处理我明确地抛出HttpException
,而httpErrors
节点处理,即下跌Globals.asax.cs指定的路由模式之外的URL。
PS使用这些设置,我不需要设置 Response.TrySkipIisCustomErrors