Получение сведений об исключении из ASP.NET PageMethods на стороне клиента - PullRequest
5 голосов
/ 08 июня 2009

У меня есть метод страницы, на который я звоню из своего JavaScript скажи

Pagemethods.MyMethod(MyParameter, onsucess, onfailure);

В коде у меня есть что-то вроде этого:

[WebMethod]
public static void MyMethod(Param)
{
   try{
     //DoSomething..
   }
   catch(exception ex)
   {
      //Log the exception and rethrow
      throw new exception(ex.innerexception);
   }
}

Теперь проблема, с которой я сталкиваюсь:

Всякий раз, когда я получаю исключение, я выбрасываю исключение из кода

Но в методе onfailure я просто получаю общее сообщение о том, что "метод сервера MyMethod завершился ошибкой:"

Кажется, я не получаю информацию об исключении, а только это общее исключение,

Как я могу получить сведения об исключении в JavaScript, чтобы обработать его в соответствии с пользовательским интерфейсом / JavaScript.

Я проверил, что это не проблема с настройками пользовательских ошибок в web.config.

Может ли кто-нибудь просветить меня о том, что здесь происходит?

PS: я прошел через каждую строку кода, и исключение после регистрации перебрасывается с соответствующими деталями исключения, то есть сообщением.

Ответы [ 2 ]

5 голосов
/ 08 июня 2009

Насколько я понимаю, пока у вас есть

<customErrors mode="off" />

в вашем файле web.config, сообщение будет возвращено клиенту. Вы уверены, что у вас есть этот параметр?

Для отображения сообщения, связанного с ошибкой, вам необходимо присвоить имя функции как третий параметр вызова метода страницы: эта функция может быть простой:

function onfailure( result )
{
   alert( result.get_message() );
}

Это то, что у нас есть, и все работает ОК

1 голос
/ 27 декабря 2012

После того, как вы установили <customErrors mode="off" /> в разделе <system.web> файла web.config, попробуйте эти функции, чтобы получить все подробности исключений из сбоя PageMethod:

function onfailure(error) {                
    alert("Error: " + error.get_message() + "; " + 
        "Stack Trace: " + error.get_stackTrace() + "; " + 
        "Status Code: " + error.get_statusCode() + "; " + 
        "Exception Type: " + error.get_exceptionType() + "; " + 
        "Timed Out: " + error.get_timedOut());
}

Я нашел код состояния ошибки гораздо более полезным, чем само сообщение об ошибке.

...