【问题标题】:How should asp.net(mvc) server return error to jquery ajax call to be caught in error callback?asp.net(mvc) 服务器应该如何将错误返回给 jquery ajax 调用以被错误回调捕获?
【发布时间】:2010-10-27 07:39:13
【问题描述】:

假设我的控制器中有一个通过 jQuery AJAX 调用调用的方法。例如。我想删除一个用户。当一切正常时,我返回 new Content('ok') 并退出该方法。

发生错误时该怎么办?我想通过适当的状态代码来表示它,以便调用我的错误回调。为什么是状态码?在这里阅读: How do you trigger the "error" callback in a jQuery AJAX call using ASP.NET MVC?

但是,该方法不起作用,因为 IIS7 返回它自己的消息(错误请求),其中包含我的自定义错误消息。

除此之外还有另外两个问题:

  1. 它也必须与 IIS6 一起使用
  2. IE8 不返回“错误请求”字符串。在错误回调中,属性 request.responseTest 为 null。

错误回调可能如下所示: 错误:函数(请求){警报(request.responseText);}

【问题讨论】:

    标签: asp.net-mvc ajax callback


    【解决方案1】:

    设置 Response.StatusCode 是正确的做法。要修复 IIS 的“有用”错误处理,请设置 HttpResponse.TrySkipIisCustomErrors 属性。你可以阅读更多关于这个here的信息。

    【讨论】:

    • 您看到的 IIS 7 行为是 IIS 7 独有的,必须专门解决。阅读我的答案中的链接。
    • 可能我不明白。提供的链接仅与 IIS 7 相关,但我也需要针对 IIS 6 的解决方案(如 (1) 中所述)
    • IIS 6 不会像 IIS 7 那样替换 500 错误。但是,如果您抛出异常并使用 [HandleError] 来“捕获”它,MVC 框架就会这样做。这是两个完全不同的问题。类似地,对于您在 Web.config 中定义的任何自定义错误处理。您的帖子描述了 IIS 7 的一个真正问题,我为您提供了解决方案。您可能还遇到了一个完全独立的问题,其症状也出现在 IIS 6 中,但是 (1)不会有一个解决方案可以解决这两个问题,并且(2) 您的问题中没有足够的信息来诊断第二个问题。
    • 如果我能投票给这 10 倍,我会的。我刚刚经历了 1.5 天的痛苦试图弄清楚这一点。谢谢!!!
    • 马克 Struzinski...我们是 2! =)
    猜你喜欢
    • 2016-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多