.Net Windows-Dienst Wirft EventType clr20r3-system.Daten.sqlclient.sql-Fehler
Habe ich eine .Net/c# 2.0-windows-Dienst. Der Einstiegspunkt ist verpackt in einem try-catch-block, die mich benachrichtigt, der Probleme und der Dienst weiterhin funktioniert normal, doch wenn ich einen Blick in die server-Anwendung-Ereignisprotokoll sehe ich eine Reihe von "EventType clr20r3" Fehler sind, was den Dienst zu sterben unerwartet. Der catch-block hat ein "catch (Exception ex)" - und nicht rethrow die Ausnahme.
Jede sql-Befehle ist der Typ "CommandType.StoredProcedure" und sind ausgeführt mit SqlDataReader. Diese sproc ruft die Funktion korrekt 99% der Zeit und wurden alle gründlich Einheit getestet, profiliert und QS würde. Ich zusätzlich verpackt diese Aufrufe in try-catch-Blöcke nur um sicher zu sein und bin immer noch erleben, diese nicht behandelte Ausnahmen.
Diese nur in unserer Produktionsumgebung und kann nicht dupliziert werden in unserem dev-oder staging-Umgebungen (auch unter Last).
Warum ist meine Fehlerbehandlung nicht fangen diese bestimmten Fehler? Gibt es trotzdem, um Details zu erfassen, als um die Ursache des Problems?
Hier ist ein Beispiel für das Ereignisprotokoll:
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.
Zusätzlich
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.
Haben Sie versucht, indem eine Anwendungsdomäne.UnhandledException-Ereignishandler? msdn.microsoft.com/en-us/library/... Ziemlich viel, das problem ist, Sie haben eine unbekannte SQL-Ausnahme irgendwo im code.
Positiv. Ich sehe nur Paare von Nachrichten, die den oben genannten Fehler und Nachrichten, die den service neu gestartet wurde.
Serapth...habe ich nicht. Ich werde das mal probieren. Das könnte ein Teil der Antwort. Sind Sie der angibt, system.Daten.sqlclient.sql kann spin up seine eigene appdomain?
Ich sehe, dass Sie erwähnen die Platzierung der Aufrufe in einem try-catch-block... dies Ist eine Implementierung der folgenden, runtingsproper.blogspot.com/2010/02/... ?
InformationsquelleAutor William Edmondson | 2010-04-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Beantworten von Kommentaren. Froh geholfen zu haben. 🙂
InformationsquelleAutor Serapth
Dieser Fehler ist wahrscheinlich passiert auf einem anderen thread als dein Einstiegspunkt.
Müssen Sie irgendwie definieren exception-handling für Ihr hintergrund-threads sowie.
Wenn Sie mit WCF zu wickeln Ihre service haben Sie die Möglichkeit zu definieren, wie Fehler und andere Ausnahmen behandelt werden. Ist dies, wie Sie hosting-service?
EDIT: Wenn Sie nicht Ablaichen etwas asynchron, und es ist nicht eine WCF/etc app, versuchen, Umgang mit AppDomain.UnhandledException-und Protokollierung die ausführliche Fehlermeldung gibt.
Ich gewickelt habe alle sql-Aufrufe in try-catches als gut. Ich nicht drehen bis alle threads innerhalb dieser Anrufe, noch mache ich irgendeine andere Art der asynchronen Aufrufe. Und als Adam erwähnt, dies ist ein Windows-Dienst.
Nur weil es ein windows-Dienst, bedeutet nicht, dass Sie nicht mit Remoting oder WCF-können Sie ganz einfach host, die Sachen in einen Windows-Dienst.
Siehe Bearbeitungen.
Ich habe die Unterscheidung, denn es gibt nicht irgendeinen Grund zu glaubst es ist ein WCF service. Hoofbeats und zebras und alle.
InformationsquelleAutor Dave Markle