Ich habe einen benutzerdefinierten Windows-Dienst, den ich auf mehreren Hyper-V-VMs ausführe. Die VMs werden einige Male pro Stunde neu gestartet, wenn automatisierte Tests ausgeführt werden. Der Dienst ist auf automatischen Start eingestellt und fast immer läuft es gut an."Es wurde ein Timeout beim Warten auf die Verbindung des Dienstes erreicht" Fehler nach dem Neustart
Aber vielleicht 5% der Zeit, ohne Muster, die ich erkennen kann, startet der Dienst nicht. Wenn es fehlschlägt, erhalte ich einen Fehler in der Ereignisanzeige mit der Meldung
Ein Zeitlimit wurde erreicht (30000 Millisekunden), während ich darauf wartete, dass der My Service Name-Dienst eine Verbindung herstellt.
Wenn dies der Fall ist, kann ich den Dienst manuell starten oder neu starten und der Dienst wird gut gestartet.
Die Sache, die ich nicht herausfinden kann ist, dass die 30-Sekunden-Timeout nicht in meinem Code auftritt. Die erste Zeile der OnStart() - Methode meiner Serviceklasse protokolliert "Starting ..." in ihrem log4net-Protokoll. Wenn der Dienst nicht startet, erhalte ich überhaupt nichts, was anzeigt, dass entweder log4net aus irgendeinem Grund nicht protokolliert werden kann oder das Zeitlimit auftritt, bevor mein OnStart() aufgerufen wird.
Der Dienst läuft auf einer Vielzahl von Betriebssystemen, von XP bis hin zu Win7 und 2008R2, und ich weiß, dass das Einstellen des Dienstes auf verzögerten Start dies für Vista und später lösen kann, aber das scheint wie ein Hack.
Ich konnte nicht Remote-Debugging dies aufgrund der Tatsache, dass es so intermittierend und während des Systemstarts passiert, und ich bin ratlos zu weiteren Möglichkeiten, um herauszufinden, was los ist. Irgendwelche Ideen?
Ist Ihr Dienst abhängig von anderen Diensten oder sind Dienste von Ihrem Dienst abhängig, um zu starten? –
Nein, es ist komplett eigenständig. –
Welche Art von Appender verwenden Sie für log4net? –