我正在运行我的MVC 3应用程序(最近从2更新)在IIS 7.5(Win 7 64位)上,使用.NET 4.0集成管道应用程序池,并在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错误页面吗?