2009-06-08 16 views
5

Sto avendo un PageMethod a cui do una telefonata dal mio JavaScript diconoOttenere Dettagli eccezione da ASP.NET PageMethods Sul lato client

Pagemethods.MyMethod(MyParameter, onsucess, onfailure); 

nel codice dietro, ho qualcosa di simile:

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

Ora il problema che ho di fronte è:

ogni volta che faccio ottenere un'eccezione, ho ri generare l'eccezione dal codice dietro

Ma nel metodo onfailure, ottengo solo un messaggio generico dicendo che "il metodo di server non riuscita con myMethod seguente errore:"

io non sembrano per ottenere i dettagli di eccezione e solo tale eccezione generica,

Come posso ottenere i dettagli dell'eccezione su JavaScript, per gestirlo in base all'interfaccia utente/JavaScript.

Ho verificato, che non è un problema con le impostazioni degli errori personalizzati in web.config.

Qualcuno può illuminarmi su ciò che sta accadendo qui?

PS: ho attraversato ogni singola riga di codice e l'eccezione dopo essere stata registrata viene ricontrollata con i dettagli di eccezione appropriati, ovvero il messaggio.

+1

La gestione delle eccezioni è pessima. Dopo aver registrato l'eccezione, usa 'throw;'. Il tuo codice sta distruggendo la traccia dello stack e perdendo i dettagli delle eccezioni. –

risposta

5

Per quanto ho capito fino a quando si dispone di

<customErrors mode="off" /> 

nel web.config, il messaggio verrà restituito al cliente. Sei sicuro di avere questa impostazione?

Per visualizzare il messaggio associato con l'errore è necessario aver oassed il nome della funzione come terzo parametro della chiamata al metodo pagina: questa funzione potrebbe essere semplice come:

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

Questo è quello che abbiamo e funziona OK

+0

Sì, ho la modalità errori personalizzati "off" Ma non è possibile ottenere il motivo per cui viene visualizzato il messaggio generico "il metodo server MyMethod non è riuscito con il seguente errore:" e solo molto altro nei dettagli dell'errore. – SudheerKovalam

+0

Che codice hai nella tua funzione di javascript onfailure? Usi get_message per estrarre il 'messaggio'? –

+0

questo è il modo in cui il mio metodo onfailure appare come function onCallFailure (ex, userContext, methodName) { alert (es.get_message());} Questo è dove vedo quel messaggio di errore generico che ho detto ottengo – SudheerKovalam

1

Dopo aver impostato <customErrors mode="off" /> nella sezione <system.web> del web.config, provare queste funzioni per ottenere tutti i dettagli delle eccezioni da onfailure del 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()); 
} 

Ho trovato che il codice di stato dell'errore è molto più utile del messaggio di errore stesso.