2009-06-08 3 views
5

Я имею pagemethod, к которому я дать звонок от моего JavaScript сказатьПолучение Сведения об исключении из ASP.NET PageMethods на стороне клиента

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: Я прошел через каждую строку кода, а исключение после того, как оно занесено в журнал, было проигнорировано с помощью соответствующих сведений о конкретном исключении, т. Е. Сообщения.

+1

Ваша обработка исключений очень плохая. После регистрации исключения просто используйте 'throw;'. Ваш код уничтожает трассировку стека и теряет сведения об исключении. –

ответ

5

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

<customErrors mode="off" /> 

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

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

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

Вот что мы имеем и он хорошо работает

+0

Да, у меня есть пользовательский режим ошибок «выключен» Но wht я не понимаю, почему даже получить это общее сообщение «метод сервера MyMethod не удалось с следующей ошибкой:« и только ничего в деталях ошибки. – SudheerKovalam

+0

Какой код у вас есть в функции onfailure javascript? Вы используете get_message для извлечения «сообщения»? –

+0

вот как мой метод onfailure выглядит как функция onCallFailure (ex, userContext, methodName) { alert (ex.get_message());} Здесь я вижу, что общее сообщение об ошибке я сказал, что у меня есть – SudheerKovalam

1

После установки <customErrors mode="off" /> в <system.web> разделе web.config, попробуйте эти функции, чтобы получить все детали исключения из OnFailure в 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()); 
} 

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

Смежные вопросы