我在带有 .NET 4.0 集成管道应用程序池的 IIS 7.5(Win 7 64 位)上运行我的 MVC 3 应用程序(最近从 2 更新),并在 web.config 中进行了以下设置:
<customErrors mode="On" defaultRedirect="~/Problem/Oops" redirectMode="ResponseRedirect">
<error statusCode="404" redirect="~/Problem/NotFound" />
</customErrors>
如果控制器上的操作方法引发异常,服务器会生成 500 错误代码,它会正确地将浏览器发送到默认重定向 URL。
但是,如果我的操作故意通过 HttpNotFound() 返回 HttpNotFoundResult,我会得到 IIS 7.5 404.0 错误页面,而不是我的 web.config 中指示的页面。
如果我输入一个在我的应用程序上不存在的 URL,例如http://localhost/MyApp/FOO,那么我确实会显示 web.config 指示的页面。
任何人都知道为什么我在使用 HttpNotFound() 时没有被重定向到我的自定义 404 错误页面?