43 votes

Pourquoi la méthode global.asax Application_Error ne capture-t-elle pas les exceptions émises par le service ASMX?

Et comment le réparer. J'aimerais enregistrer chaque exception levée à des fins de maintenance.

43voto

Raelshark Points 982

Ce problème est connu dans .Net - Application_Error déclenche jamais pour un service web. Vous ne savez pas si il n'y a aucune raison qu'il le serait par la conception, mais il ne fonctionne tout simplement pas.

Jeff Atwood avait un post sur ce il y a quelques années, avec les idées suivantes:

  • Mettre un bloc try-catch autour de chaque méthode de service web
  • L'utilisation d'une façade modèle de conception et d'inclure le try-catch dans les objets parents
  • Écrire une coutume extension SOAP ou HTTPModule

La seule que j'ai de soins pour est le premier, même s'il semble que beaucoup de travail.

17voto

John Saunders Points 118808

Mieux: HttpApplication.Événement d'erreur:

Note:

Si votre application Web contient XML Des services Web, vous ne pouvez pas utiliser l'Erreur événement mondial pour le traitement des exceptions ces services. Le gestionnaire HTTP pour Services Web XML, consomme tout exception qui se produit dans un site Web XML le service et la convertit en un SAVON faute avant que l'Erreur ne soit appelé. Pour gérer de service Web XML exceptions, construire une extension SOAP Web de processus service exceptions personnalisé dans un mondial gestionnaire d'exception. Pour plus d' d'informations, voir de la Manipulation et de les Jeter Des Exceptions dans les Services Web XML.

14voto

kbaribeau Points 192

Pour ceux qui recherchent de texte de Microsoft sur ce sujet, voir ici: "de la Manipulation et de lever des Exceptions dans les Services Web XML".

C'est la section appropriée:

Une application Web peut être composée de plusieurs services Web XML, cependant l'événement Application_Error dans le Global.asax fichier ne peut pas être utilisé pour le mondial de la gestion des exceptions. Le HttpHandler pour les services Web XML consomme toute exception qui se produit lorsqu'un service Web XML est en cours d'exécution et il se transforme en une erreur SOAP avant l'événement Application_Error est appelé.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X