5

我在带有 .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 错误页面?

4

2 回答 2

6

请尝试以下语法,而不是调用HttpNotFound并让我知道结果;)

throw new HttpException(404, "NotFound");
于 2012-02-23T18:39:06.017 回答
0

你试过设置Response.TrySkipIisCustomErrors = true;吗?

(见http://blog.janjonas.net/2011-04-13/asp_net-prevent-iis_75_overriding-custom-error-page-iis-default-error-page

于 2011-04-13T20:59:42.853 回答