【问题标题】:Custom 400 with message being overwritten自定义 400 消息被覆盖
【发布时间】:2013-03-22 22:44:50
【问题描述】:

我想向用户显示一些自定义错误消息。因此,当他们说输入错误的用户名/密码组合时,我可能会在我的代码中这样做:

Response.StatusCode = 400;
return Json("Invalid username or password");

这在我的本地机器上运行良好。我一直在部署到网络主机,这些消息正在被服务器覆盖,因此它们都显示为:

页面无法显示,因为内部服务器错误 发生了。

服务器显然试图保护我不泄露有关问题的敏感信息,但我确实希望这个错误能够通过并被用户看到(真的,由我的代码解析然后显示)。

我认为在 web.config 中我可以做一些事情来完成这项工作,但到目前为止我尝试过的一切都没有奏效。有什么想法吗?

我现在拥有的 web.config 的相关部分:

<system.webServer>
    <httpErrors errorMode="Custom" existingResponse="PassThrough">
    </httpErrors>
    <validation validateIntegratedModeConfiguration="false"/>
    <modules runAllManagedModulesForAllRequests="true"/>
    etc.

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-4 iis-7


    【解决方案1】:

    默认情况下,某些 HTTP 状态代码会被 IIS 隐藏并被 IIS 替换。但是,可以使用以下行进行配置:

      <system.webServer>
        <httpErrors errorMode="Detailed"/>
    

    这将允许您在响应中传递您的自定义消息,并在 AJAX 调用完成时在客户端读取它。

    【讨论】:

    • 我也认为会是这样,尤其是“PassThrough”部分。无论如何,我按照您在答案中的确切方式尝试了它,但我仍然得到简单的一条线消息。 :\
    • 为我工作。小心不要将它与“”的“”混淆。
    【解决方案2】:

    为了处理每个 Http 错误代码,您需要在 web.config 文件中添加特定的映射

     <customErrors mode="On/RemoteOnly" >
          <error statusCode="400" redirect="My400View" />
          <error statusCode="404" redirect="My404iew" />
          <error statusCode="500" redirect="My500View" />
        </customErrors>
    

    【讨论】:

    • 嗯,这是一个 AJAX 调用,所以没有视图。我想显示一条短信,通知用户他们的输入未被接受。您的建议是否适用?
    • 如果你使用 jQuery,你可以使用 statusCode 属性 (api.jquery.com/jQuery.ajax)
    • 如果我有多个错误消息?响应中有描述性错误消息,我可以在本地看到。问题是我的托管服务器中有一些东西阻止了它的传递。
    【解决方案3】:

    解决方案最终是从 web.config 中完全删除 元素。即使将其设置为此处看到的默认选项 http://www.iis.net/configreference/system.webserver/httperrors 也不起作用,所以我有点困惑为什么删除它起作用。

    <system.webServer>
        **Remove <httpErrors> !**
        <validation validateIntegratedModeConfiguration="false"/>
        <modules runAllManagedModulesForAllRequests="true"/>
    

    【讨论】:

      猜你喜欢
      • 2012-02-13
      • 1970-01-01
      • 2017-02-20
      • 2014-02-17
      • 2020-04-16
      • 1970-01-01
      • 2019-02-12
      • 2015-10-19
      • 2019-08-18
      相关资源
      最近更新 更多