Global.asax ApplicationError не вызывает исключений в веб-методах - PullRequest
2 голосов
/ 06 марта 2012

У меня есть ситуация, когда я использую 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 выдает исключение? Я пробовал (буквально) сотни сценариев:

... но никто из них не работал до сих пор. Так что любая помощь будет высоко ценится!

...