自定义错误与错误一起使用,但在404失败

时间:2014-01-10 15:08:17

标签: c# asp.net-mvc asp.net-mvc-4

在我的MVC应用程序中,我在web.config中启用了自定义错误。我希望所有错误都重定向到一个页面。

<customErrors mode="On" redirectMode="ResponseRewrite" />

当我这样做时,这会重定向到~/Views/Shared/Error.cshtml页面

throw new Exception();

但是当我浏览site/Home/Bla时,它会将我重定向到IIS常规404错误页面,而不是我的自定义错误页面。

我尝试添加

private void Application_Error(object sender, EventArgs e)
{
    Response.TrySkipIisCustomErrors = true;
}

Global.asax,但无济于事。

有人知道可能是什么问题吗? (如果你需要更多的信息,那么你就得到了。)

2 个答案:

答案 0 :(得分:1)

尝试将此添加到您的web.config

<customErrors mode="On" />

<system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <!-- Avoid IIS messing with custom errors http://stackoverflow.com/a/2345742/426840 -->
    <httpErrors existingResponse="PassThrough" />

  </system.webServer>

答案 1 :(得分:1)

我发现了这个问题。感谢杰森指出我正确的方向。 :)感谢他,我找到了正确的方法。

StackOverflow page

中的答案

显然我指向了控制器和操作,如果您在redirectMode="ResponseRewrite"节点上指定customErrors,则重定向会使用较旧的库来获取内容。这应该是一个页面,不能是一个mvc路线。

因此,您要么指定实际页面,要么使用redirectMode="ResponseRedirect"选项。页面必须是.htm或.html页面,也不接受.cshtml。