【问题标题】:Ajax error message only show statusAjax 错误信息只显示状态
【发布时间】:2014-11-18 16:15:37
【问题描述】:

我有一个 ASP.NET MVC 网站。

我有一个 Ajax 请求,如果出现问题,我想显示自定义错误。

在我的控制器中:

catch (Exception e)
  {
      Response.StatusCode = (int) HttpStatusCode.BadRequest;
      Response.Write(e.Message);
      return null;
  }

在 Javascript 中:

error: function (xhr) {
    $("#ErrorDetails").html(xhr.responseText);
}

我不知道这是否是一个好方法,但是当我在本地调试时,我得到了完整的错误消息。

但如果我托管网站,我只会收到“错误请求”而不是消息。

知道为什么以及如何解决它吗?

【问题讨论】:

    标签: ajax asp.net-mvc error-handling


    【解决方案1】:

    我尝试了以下 javascript ajax (jQuery) 代码并能够得到错误消息。

     jQuery(function ($) { 
            $.ajax({ 
                url: "/Home/GetData", 
                type: "GET", 
                dataType: "text", 
                success: function () { 
                    alert("Success"); 
                }, 
                error: function (xhr) { 
                   alert(xhr.responseText); 
                } 
            }); 
        }); 
    

    托管网站后,您需要更新代码中的网址。你能验证一下是否正确吗?

    【讨论】:

    • 是的,我这样做了,Url 是由 "@Url.Action("Action" , "Controller")" 自动生成的,但我不知道为什么我只收到 "Bad Request" 而不是完整的错误
    【解决方案2】:

    我不确定它是否适用于您的场景,但请尝试将以下内容添加到您的 web.config 文件中 <system.web>:

    <system.web>
        <customErrors mode="Off" />
      ...
    </system.web>
    

    customErrors 模式默认设置为RemoteOnly,这意味着本地调用者会收到完整的异常信息;远程调用者接收过滤的异常信息。

    查看更多under this link

    【讨论】:

    • 感谢您的提示,但它没有用。我终于在成功回调而不是错误回调中管理错误...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-25
    • 2013-08-20
    相关资源
    最近更新 更多