Как отловить исключение в VB.NET при использовании jQuery ajax - PullRequest
2 голосов
/ 05 ноября 2008

Я использую jQuery для обработки всех моих потребностей ajax для сайта ASP.NET, закодированного в VB. Когда я использую встроенную функцию $ .ajax для POST для функции code-behind и возникает исключение, она просто выходит из функции и показывает ошибку на стороне клиента.

Помимо затруднения отладки при кодировании, большая проблема заключается в том, что функция Application_Error в Global.asax не запускается при возникновении этих исключений. Это делает практически невозможным отслеживание производственных ошибок.

Почему бы не всплыть в Application_Error? Является ли ответ обернуть функцию code-behind в операторе 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

Ответы [ 2 ]

1 голос
/ 08 декабря 2008

Я разобрался. Хотя я не нашел способа напрямую вызвать ошибку для запуска события Application_Error, я обнаружил свойство в объекте jQuery XMLHttpRequest, которое содержит фактический текст исключения.

Вот пример, который покажет ошибку в предупреждении:

error: function(XMLHttpRequest, textStatus, errorThrown) {
    alert("Error: " + XMLHttpRequest.responseText);
}

Другая идея состоит в том, чтобы отправить ошибку через AJAX в веб-метод, который будет обрабатывать всю логику события ошибки.

0 голосов
/ 05 ноября 2008

С .Net 3.5 вы можете получить объект ScriptManager и зарегистрировать в нем свой javascript, это позволяет .Net управлять сценариями (это не jsut для MS Ajax, он работает со сторонними библиотеками) , это может быть решением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...