C# 自定义错误与错误一起工作,但在404上失败

C# 自定义错误与错误一起工作,但在404上失败,c#,asp.net-mvc,asp.net-mvc-4,C#,Asp.net Mvc,Asp.net Mvc 4,在我的MVC应用程序中,我在web.config中启用了自定义错误。我希望所有错误都重定向到一个页面 <customErrors mode="On" redirectMode="ResponseRewrite" /> 但当我浏览站点/Home/Bla时,它会将我重定向到IIS常规404错误页面,而不是我的自定义页面 我试图补充 private void Application_Error(object sender, EventArgs e) { Response.TryS

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

<customErrors mode="On" redirectMode="ResponseRewrite" />
但当我浏览
站点/Home/Bla
时,它会将我重定向到IIS常规404错误页面,而不是我的自定义页面

我试图补充

private void Application_Error(object sender, EventArgs e)
{
    Response.TrySkipIisCustomErrors = true;
}
Global.asax
,但无效


有人知道可能是什么问题吗?(如果您需要更多信息,那么aks和ye将收到。)

尝试将此添加到您的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>

我发现了问题。感谢杰森为我指明了正确的方向。:)多亏了他,我才找到了它

答案在

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


因此,要么指定实际页面,要么使用
redirectMode=“ResponseRedirect”
选项。该页面需要是.htm或.html页面,也不接受.cshtml。

这里有一种使用通用错误控制器的方法:+1:感谢发布您的解决方案。我希望更多的人会这么做。我知道,我也很讨厌。这就是为什么当我发布一个问题时,我会回头查看,直到我得到答案并更新它。而且我也不怕在应得的时候给予表扬。:)
<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>