在我的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
,但无济于事。
有人知道可能是什么问题吗? (如果你需要更多的信息,那么你就得到了。)
答案 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)
我发现了这个问题。感谢杰森指出我正确的方向。 :)感谢他,我找到了正确的方法。
中的答案显然我指向了控制器和操作,如果您在redirectMode="ResponseRewrite"
节点上指定customErrors
,则重定向会使用较旧的库来获取内容。这应该是一个页面,不能是一个mvc路线。
因此,您要么指定实际页面,要么使用redirectMode="ResponseRedirect"
选项。页面必须是.htm或.html页面,也不接受.cshtml。