【问题标题】:Custom Error Works with Errors, But Fails On 404自定义错误适用于错误,但在 404 上失败
【发布时间】:2014-01-10 15:08:16
【问题描述】:

在我的 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,但无济于事。

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

【问题讨论】:

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


【解决方案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>

【讨论】:

    【解决方案2】:

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

    StackOverflow page找到答案

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

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

    【讨论】:

    • +1:感谢您发布您的解决方案。我希望更多的人会这样做。
    • 我知道,我也烦。这就是为什么我确保当我发布问题时,我会回来查看直到我得到答案并更新它。而且我不害怕在应得的地方给予信任。 :)
    猜你喜欢
    • 2011-08-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-26
    • 2012-05-02
    • 2012-03-26
    • 2010-10-11
    • 1970-01-01
    相关资源
    最近更新 更多