Hallo zusammen,
ich habe einen Windows-Dienst programmiert. Dieser macht was er soll.
Jetzt habe ich zufällig entdeckt, dass in der Windows-Ereignisanzeige alle ca. 20sec eine angebliche IOException dieses Dienstes als Information aufläuft. Der Dienst stürzt aber überhaupt nicht ab und läuft mittlerweile seit Monaten ununterbrochen.
Report aus Ereignisanzeige (Auszug):
EventType=CLR20r3
...
Sig[8].Value=System.IO.IOException
...
UI[8]=Service99 wurde beendet und geschlossen.
Diese Informationen laufen unaufhörlich weiter auf, auch bei beendetem Dienst und sogar nachdem ich den Dienst deinstalliert habe. Das verstehe ich überhaupt nicht. Dass der Service immer wieder beendet wurde kann ja nicht sein, denn es wurde kein automatischer Restart eingestellt. Kann mir da jemand helfen? Vielen Dank.
Viele Grüße Ralf
Der Fehler ist ein Sammelfehler. Die wichtigsten Punkte sind:
Sig[0].Name=Problemsignatur 01
Sig[0].Value=Service99.exe
Sig[1].Name=Problemsignatur 02
Sig[1].Value=1.0.0.7
Sig[2].Name=Problemsignatur 03
Sig[2].Value=642c0df6
Sig[3].Name=Problemsignatur 04
Sig[3].Value=System.Core
Sig[4].Name=Problemsignatur 05
Sig[4].Value=4.8.4515.0
Sig[5].Name=Problemsignatur 06
Sig[5].Value=624cf626
Sig[6].Name=Problemsignatur 07
Sig[6].Value=451
Sig[7].Name=Problemsignatur 08
Sig[7].Value=245
Sig[8].Name=Problemsignatur 09
Sig[8].Value=System.IO.IOException
Problemsignatur 01 = Die App, die den Fehler auslöst.
Problemsignatur 09 = Die Exception
Leider hast Du es versäumt die letzten - gefühlt 50 - Jahre die App zu aktualisieren; denn in neueren Runtime-Versionen gibts mehr Infos.
In diesem Fall müsstest Du jetzt mit dem ILViewer durchgehen und schauen, was Methoden am Offset 245 und 415 sind und kannst dann schauen, was fehlt.
Aus Erfahrung ist das entweder ein Folgefehler weil in der Registry (GAC) was kaputt ist, oder es fehlt eine Abhängigkeit, oder eine Abhängigkeit von der Abhängigkeit.... etc
Einfacher kann man das herausfinden, wenn man in der Anwendung AppDomain.UnhandledException
abonniert und schaut, was los ist.
Soviel mal zur Erklärung des Eintrags.
Diese Informationen laufen unaufhörlich weiter auf, auch bei beendetem Dienst und sogar nachdem ich den Dienst deinstalliert habe. Das verstehe ich überhaupt nicht.
Macht kein Sinn, daher kann das auch nicht sein. Der EventLog erfindet nichts.
Dann wirst irgendwas übersehen haben.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Hallo,
danke für den Hinweis. Ich habe das Event abboniert, es wird aber nichts ins Logfile geschrieben, trotz dass im Eventmanager weiter Fehler einlaufen.
static void Main()
{
AppDomain.CurrentDomain.UnhandledException += handleException;
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new Service99()
};
ServiceBase.Run(ServicesToRun);
}
static void handleException(object a_s, UnhandledExceptionEventArgs a_args)
{
var _e = (Exception)a_args.ExceptionObject;
log.logthis("Exception.log", string.Format("e.Type: {0}; e.Message: {1}", _e.GetType().ToString(), _e.Message), 1);
}
Lösche mal die Datei "C:\proj\Service99\Service99.exe" (bzw. benenne sie um) und schau, ob dann immer noch Einträge in der Windows-Ereignisanzeige erzeugt werden (bzw. ob diese sich dann unterscheiden).
Und ist das denn der Pfad, für den du den Service registriert hast (oder evtl. ein älterer)? Ansonsten schau auch in "Dienste" (Services) nach, ob evtl. noch andere ähnliche Dienste dort registriert sind.
Habe den Dienst gestoppt und deinstalliert, den kompletten Ordner "C:\proj\Service99\" gelöscht.
Einträge in der Windows-Ereignisanzeige werden trotzdem weiter erzeugt. Immer noch mit Verweis auf die "C:\proj\Service99\Service99.exe".
Ist P2 die Version der exe? Dann wundert mich das, da die aktuelle Programmversion die 1.0.1.0 ist.
Problemsignatur:
P1: Service99.exe
P2: 1.0.0.7
Im Taskmanager finde ich keine weiteren Einträge. Wo kann Windows denn noch etwas versteckt haben?
Und trotz Löschen kommt immer noch die selbe Fehlermeldung?
Und "1.0.0.7" ist die Versionsnummer (aber die sollte gar nicht mehr ermittelbar sein, wenn es die Datei nicht mehr gibt).
Der Dienst scheint ja zeitgesteuert alle 20s zu starten. Hast du mal in der "Aufgabenplanung" nachgeschaut?
Und trotz Löschen kommt immer noch die selbe Fehlermeldung?
Ja
Und "1.0.0.7" ist die Versionsnummer (aber die sollte gar nicht mehr ermittelbar sein, wenn es die Datei nicht mehr gibt).
Eben
Der Dienst scheint ja zeitgesteuert alle 20s zu starten. Hast du mal in der "Aufgabenplanung" nachgeschaut?
Im Dienst ist kein Timer enthalten und in der Aufgabenplanung ist auch nichts eingetragen.
Dann fällt mir nur noch die Registry ("regedit") ein, in der du mal nach "Service99" suchen könntest.
Als Ergänzung zum TaskManager könntest du den Process Exolorer herunterladen und schauen, ob dort dann (kurzzeitig) "Service99"-Prozesse auftauchen.
Es sind folgende Einträge in der Registry zu finden:
Computer\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\EventLog\Application\Service99
1.jpg
Computer\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Service99
Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application\Service99
2.jpg
Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Service99
3.jpg
Wenn du weiterhin den Dienst deinstalliert hast, dann sollte dieser eigentlich nicht mehr in der Registry existieren.
Du kannst ja mal "Computer\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Service99" löschen (evtl. vorher diesen als Backup exportieren).
"CurrentControlSet" ist immer ein Verweis auf das aktuell eingestellte "ControlSet" (bei dir also "ControlSet001") und daher brauchst du daran keine Änderung vornehmen.
Edit: Oder mal testweise den ImagePath
dort abändern und schauen, ob sich in dem Log dann auch dieser Pfad ändert (danach kannst du ihn ja immer noch löschen).
So nochmal der Reihe nach:
-ich habe den Dienst deinstalliert
-in der Registry sind dann keine Einträge mehr vorhanden
-das Programmverzeichnis gelöscht
-Rechner neu gestartet
In der Ereignisanzeige laufen die Informationen munter weiter, aller 20 Sekunden. Allerdings als Version 1007, obwohl die letzte installierte die 1010 ist. Von der 1010 kommen auch im Betrieb keine Meldungen.
Der Dienst ist auf 5 Rechnern in der Produktion parallel installiert (alle haben des gleiche BS-Image). Überall das identische Verhalten.
Installiere ich den Dienst auf meinem Laptop gibt es diese Meldungen nicht. Auch beim Debuggen auf meinem Laptop kommen keinerlei Exceptions. Ich dreh durch ;o(