У меня есть ситуация, когда я использую jQuery для вызова Webmethod в .aspx codebehind (не asmx webservice или что-то подобное). У меня есть простой журнал ошибок, определенный в Global.asax ApplicationError, поэтому (почти) все исключения перехватываются и регистрируются в одном месте. Дело в том, что метод ApplicationError не достигается, если внутри веб-метода возникает исключение.
Вот простой пример:
Webmethod call:
$.ajax({
type: "POST",
url: "/MyMethods.aspx/MyMethod",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
alert('ok');
}
});
Реализация Webmethod:
Public Class MyMethods
Inherits System.Web.UI.Page
<System.Web.Services.WebMethod()> _
Public Shared Function MyMethod() As String
Throw New Exception("Forced.")
Return sb.ToString
End Function
End Class
И global.asax
Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
Dim filename As String = "d:\test.txt"
Using objWriter As New System.IO.StreamWriter(filename, True)
objWriter.WriteLine(Server.GetLastError().GetBaseException().Message)
End Using
End Sub
Есть ли способ «убедить» метод ApplicationError быть достигнутым, когда webmethod выдает исключение? Я пробовал (буквально) сотни сценариев:
... но никто из них не работал до сих пор. Так что любая помощь будет высоко ценится!