.Net Service Windows Jette EventType clr20r3 système.les données.sqlclient.erreur sql

J'ai un .Net/c# 2.0 service windows. Le point d'entrée est enveloppé dans un bloc try catch qui m'avise de problèmes et permet au service de continuer à fonctionner normalement, mais quand je regarde le serveur du journal des événements d'application, je vois un certain nombre de "EventType clr20r3" les erreurs qui sont à l'origine du service de mourir de façon inattendue. Le bloc catch est un "catch (Exception ex) et ne pas relever de l'exception.

Chacune des commandes sql est du type "CommandType.StoredProcedure" et sont exécutés avec SqlDataReader de l'. Ces procédure stockée appels fonctionner correctement 99% du temps et ont tous été soigneusement testé unitaire, profilés et contrôle de la qualité avais. J'ai en outre enveloppé de ces appels dans des blocs try catch juste pour être sûr, et je suis toujours confronté à ces exceptions non gérées.

Ce que dans notre environnement de production et ne peut pas être dupliqué dans notre dev ou la mise en scène des environnements (même sous forte charge).

Pourquoi mon erreur de manipulation ne pas intercepter cette erreur particulier? Est-il de toute façon à capturer plus de détails quant à la cause racine du problème?

Voici un exemple de journal des événements:

EventType clr20r3, P1 RDC.OrderProcessorService, 
P2 1.0.0.0, 
P3 4ae6a0d0, 
P4 system.data, 
P5 2.0.0.0, P6 4889deaf, 
P7 2490, 
P8 2c, 
P9 system.data.sqlclient.sql, 
P10 NIL.

En outre

The Order Processor service terminated unexpectedly.  
It has done this 1 time(s).  
The following corrective action will be taken in 60000 milliseconds: 
Restart the service.
  • Êtes-vous sûr qu'il n'y a pas d'autres exceptions être enregistré dans le Journal des événements?
  • Avez-vous essayé d'ajouter un domaine d'application.UnhandledException gestionnaire d'événement? msdn.microsoft.com/en-us/library/... Assez bien le problème est que vous avez une unhandled exception SQL quelque part dans votre code.
  • Positive. Je viens de voir des paires de messages indiquant l'erreur ci-dessus et un message indiquant que le service a été redémarré.
  • Serapth...je n'ai pas. Je vais donner un essai. Que pourrait être une partie de la réponse. Êtes-vous en indiquant le système.les données.sqlclient.sql peut faire tourner son propre domaine d'application?
  • Je vois que vous mentionnez placer les appels dans un bloc try catch... Est-ce que la mise en œuvre de la suivante, runtingsproper.blogspot.com/2010/02/... ?
  • KSimons. Oui, j'ai fait quelque chose de très similaire.
  • Pas nécessairement, mais sans voir votre code ou les bibliothèques que vous utilisez, il n'y a aucun moyen de savoir si l'exception se produit dans un thread différent, dans une 3e partie de la bibliothèque, etc... Par le câblage d'un domaine d'application.UnhandledException gestionnaire, vous devriez au moins par la possibilité de consigner les détails de l'exception et de comprendre où votre problème point de. Juste lancer la EventArg à ((l'Exception)e.ExceptionObject).Message et vous devriez au moins avoir une meilleure idée de l'endroit où votre exception non gérée.
  • Découvrez msdn.microsoft.com/en-us/magazine/cc793966.aspx, il est tout à fait une lecture sur les exceptions non gérées (y compris ce que chaque partie de l'entrée de journal des événements de moyens (comme les P4 = "le module défaillant")). Je suis avec Serapth sur cette.
  • vous êtes de droite. Il y avait une bibliothèque qui a été un appel asynchrone à un db transaction qui n'avait pas de gestion d'erreur. Si vous souhaitez poster une réponse, je vais le marquer comme acceptée.