2009-06-08 7 views
5

J'ai un pagemethod auquel je donne un appel de mon JavaScript direDétails de l'exception de ASP.NET PageMethods sur le côté client

Pagemethods.MyMethod(MyParameter, onsucess, onfailure); 

Dans le Code derrière, j'ai quelque chose comme ceci:

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

maintenant, la question que je visage est:

Chaque fois que je reçois une exception, i re jeter l'exception du code derrière

Mais dans la méthode onfailure, je reçois juste un message générique disant que « la méthode du serveur maméthode a échoué avec l'erreur suivante: »

Je ne semblent pas obtenir les détails d'exception et que cette exception générique,

Comment puis-je obtenir les détails de l'exception sur JavaScript, afin de le gérer en fonction de l'interface utilisateur/JavaScript.

J'ai vérifié, que ce n'est pas un problème avec les paramètres d'erreurs personnalisées dans web.config.

Quelqu'un peut-il m'éclairer sur ce qui se passe ici? PS: j'ai franchi chaque ligne de code et l'exception après avoir été consignée est réinsérée avec les détails d'exception appropriés, c'est-à-dire le message.

+1

Votre gestion des exceptions est très mauvaise. Après avoir enregistré l'exception, utilisez simplement 'throw;'. Votre code détruit la trace de la pile et perd les détails de l'exception. –

Répondre

5

Pour autant que je comprends aussi longtemps que vous avez

<customErrors mode="off" /> 

dans votre web.config, le message sera retourné au client. Êtes-vous sûr d'avoir ce réglage?

Pour afficher le message associé à l'erreur, vous devez avoir oassed le nom de la fonction comme troisième paramètre de la méthode page appel: cette fonction pourrait être aussi simple que:

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

C'est ce que nous avons et il fonctionne OK

+0

Oui, j'ai le mode erreurs personnalisées "off" Mais ce que je ne comprends pas, c'est pourquoi obtenir même ce message générique "la méthode du serveur MyMethod a échoué avec l'erreur suivante:" et seulement rien que dans les détails d'erreur. – SudheerKovalam

+0

Quel code avez-vous dans votre fonction javascript onfailure? Utilisez-vous get_message pour extraire le 'message'? –

+0

Voici comment ma méthode onfailure ressemble à function onCallFailure (ex, userContext, methodName) { alerte (ex.get_message());} C'est où je vois ce message d'erreur générique j'ai dit que je reçois – SudheerKovalam

1

Une fois que vous avez défini <customErrors mode="off" /> dans la section <system.web> du web.config, essayez ces fonctions pour obtenir tous les détails d'exception de la onfailure du 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()); 
} 

J'ai trouvé le code d'état de l'erreur beaucoup plus utile que le message d'erreur lui-même.

Questions connexes