我使用 jQuery 来处理用 VB 编码的 ASP.NET 站点的所有 ajax 需求。当我使用内置的 $.ajax 函数 POST 到代码隐藏函数并且出现异常时,它只是退出该函数,并在客户端显示错误。
除了在编码时使调试变得困难之外,更大的问题是 Global.asax 中的 Application_Error 函数在发生这些异常时不会触发。这使得跟踪生产错误几乎变得不可能。
为什么它不会冒泡到Application_Error?答案是将代码隐藏函数包装在 Catch 语句中吗?
jQuery ajax 函数:
$.ajax({
type: "POST",
url: "page.aspx/GetData",
data: "{'param':'" + param_value + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
processData(msg);
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert("Error: " + textStatus + " - " + errorThrown);
}
});
VB.NET函数:
<Script.Services.ScriptMethod()> _
<WebMethod()> _
Public Shared Function GetData(ByVal param As Integer) As String
'Parse some data
Return data
End Function
最佳答案
我想出了一个解决办法。尽管我没有找到直接获取错误以触发 Application_Error 事件的方法,但我发现了 jQuery XMLHttpRequest 对象上的一个属性,其中包含实际的异常文本。
下面是一个在警报中显示错误的示例:
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert("Error: " + XMLHttpRequest.responseText);
}
另一个想法是通过 AJAX 将错误提交到将处理所有错误事件逻辑的 Web 方法。
关于asp.net - 使用 jQuery ajax 时如何在 VB.NET 中捕获异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/265403/