Javascript jQuery延迟AJAX&;500服务器错误

Javascript jQuery延迟AJAX&;500服务器错误,javascript,jquery,asmx,Javascript,Jquery,Asmx,试图找出如何调试my.ASMX中的泛型500错误 JS: C# 结果: 它甚至没有记录err参数。有什么想法吗 编辑 将错误添加到最初的Ajax调用中会得到日志信息,但仍然是通用的&无用的 编辑2 回答了我自己的问题并提出了后续问题: 我想换个说法: $.ajax({ type: "POST", url: 'Order.asmx/TestError', contentType: "application/json; charset=utf-8

试图找出如何调试my.ASMX中的泛型500错误

JS:

C#

结果:

它甚至没有记录
err
参数。有什么想法吗

编辑

将错误添加到最初的Ajax调用中会得到日志信息,但仍然是通用的&无用的

编辑2

回答了我自己的问题并提出了后续问题:


我想换个说法:

$.ajax({
        type: "POST",
        url: 'Order.asmx/TestError',
        contentType: "application/json; charset=utf-8",
        error: function (XMLHttpRequest,textStatus,errorThrown){ console.log(errorThrown); }
    });

我想换个说法:

$.ajax({
        type: "POST",
        url: 'Order.asmx/TestError',
        contentType: "application/json; charset=utf-8",
        error: function (XMLHttpRequest,textStatus,errorThrown){ console.log(errorThrown); }
    });

在正确的方向踢了一脚并进一步挖掘之后,我发现这个问题是双重的

首先,实际上我建议关闭web.config中的
customErrors
。事实并非如此,而是非常接近

真正的罪魁祸首是错误处理模块。禁用它后,无论
customErrors
打开
还是
关闭
,我都能够中继自定义错误

第二个问题是,尽管我现在可以处理错误,但仍然无法传递
System.Exception
对象。我发现这是因为
异常.TargetSite
属性不可序列化

我通过创建自己的
JsonException
类并只包括
System.Exception
类的可序列化属性(为了简单起见,在这里缩写)来解决这个问题

现在我终于得到了我想要的数据:


在朝正确方向踢了一脚并进一步挖掘之后,我发现这个问题是双重的

首先,实际上我建议关闭web.config中的
customErrors
。事实并非如此,而是非常接近

真正的罪魁祸首是错误处理模块。禁用它后,无论
customErrors
打开
还是
关闭
,我都能够中继自定义错误

第二个问题是,尽管我现在可以处理错误,但仍然无法传递
System.Exception
对象。我发现这是因为
异常.TargetSite
属性不可序列化

我通过创建自己的
JsonException
类并只包括
System.Exception
类的可序列化属性(为了简单起见,在这里缩写)来解决这个问题

现在我终于得到了我想要的数据:


将对象记录到控制台,仍然是一个通用的“内部服务器错误”,知道如何在其中获取我的自定义消息吗?尝试记录其他参数-textStatus和XMLHttpRequest。我这样做了,没有帮助。来自jQuery.com文档-当发生HTTP错误时,ErrorSprown会接收HTTP状态的文本部分,例如“未找到”或“内部服务器错误”。您确定您的自定义消息会返回到浏览器吗?你能看到完整的响应吗(例如,在ChromeDeveloperTools或Firebug中的网络选项卡中)不,绝对不是——我正在使用ChromeDeveloperTools。请参阅编辑w/屏幕截图。这使对象记录到控制台,仍然是一个通用的“内部服务器错误”,知道如何在其中获取我的自定义消息吗?尝试记录其他参数-textStatus和XMLHttpRequest。我这样做了,没有帮助。来自jQuery.com文档-当发生HTTP错误时,ErrorSprown会接收HTTP状态的文本部分,例如“未找到”或“内部服务器错误”。您确定您的自定义消息会返回到浏览器吗?你能看到完整的响应吗(例如,在ChromeDeveloperTools或Firebug中的网络选项卡中)不,绝对不是——我正在使用ChromeDeveloperTools。请参见编辑w/屏幕截图。
$.ajax({
        type: "POST",
        url: 'Order.asmx/TestError',
        contentType: "application/json; charset=utf-8",
        error: function (XMLHttpRequest,textStatus,errorThrown){ console.log(errorThrown); }
    });
public class JsonException
{
    public string Source { get; set; }
    public string Message { get; set; }
    public string StackTrace { get; set; }

    public JsonException(Exception ex)
    {
        this.Source = ex.Source;
        this.Message = ex.Message;
        this.StackTrace = ex.StackTrace;
    }
}

[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public object TestError()
{
    try
    {
        throw new Exception("Testing error");
    }
    catch (Exception ex)
    {
        return new JsonException(ex);
    }
}