Frage

Ich habe einen Windows-Dienst, der verschiedene Systemüberwachungsvorgänge ausführt.Wenn ich jedoch SNMP-bezogene Prüfungen durchführe, erhalte ich immer eine NullReference-Ausnahme.Der Code läuft einwandfrei, wenn er über die Benutzeroberfläche ausgeführt wird (unter meinem Benutzernamen und Passwort), aber es treten immer Fehler auf, wenn er als Dienst ausgeführt wird.Ich habe versucht, den Dienst unter verschiedenen Benutzerkonten (einschließlich meinem) auszuführen, ohne Erfolg.Ich habe versucht, den SNMP-Überwachungscode durch den Aufruf des PowerShell-Cmdlets get-snmp (aus den /n NetCmdlets) zu ersetzen, aber das führt zum gleichen Fehler.

Die Anwendung, mit der ich arbeite, ist PolyMon.

Irgendwelche Ideen?

War es hilfreich?

Lösung

Einige Möglichkeiten zum Debuggen:

  • Gibt es zusätzliche Informationen im Windows-Ereignisprotokoll?
  • Ich glaube, Sie sollten in der Lage sein, eine Art globales Ausnahmeereignis wie Application_Exception in Windows-Diensten abzuhören.Ich kann mich nicht an den genauen Namen erinnern, aber Sie können von dort aus zumindest einen Stack-Trace sichern.
  • Sie sollten in der Lage sein, mit dem Debuggen des Projekts im Servicemodus zu beginnen.

Einige Codefragmente/Stack-Trace/Informationen werden auf jeden Fall hilfreich sein.

Andere Tipps

Sie können dem laufenden Prozess einen Debugger hinzufügen, bevor Sie die Ausnahme auslösen.Dies sollte Ihnen eine bessere Vorstellung davon geben, was mit der Anwendung los ist.

Ein paar Dinge, die wir gesehen haben – mehr über die Unterschiede zwischen interaktiven und Diensten, könnten aber hilfreich sein …

Eine Sache, die wir gesehen haben und die nicht relevant zu sein scheint, ist der Unterschied zwischen dem, was sich auf dem Benutzer- und dem Systempfad befindet.

Eine andere Sache, die wir gesehen haben, betrifft temporäre Dateien – der Dienst, den wir hatten, erstellte viele im Verzeichnis „windows emp“ – wir haben dies aufgespürt, als er etwa 65.000 dieser Dateien erstellt hatte und damit an die Grenze dessen stieß, was ein Verzeichnis aufnehmen kann ...

Grüße Chris

Ich habe diese Art von Problemen bereits angesprochen. Wenn Sie die Antwort noch nicht gefunden haben, schlage ich Folgendes vor:

  • Aktivieren Sie die Ablaufverfolgung/Protokollierung in allen von Ihnen verwendeten Apps und Bibliotheken von Drittanbietern, sodass die Fehler in Dateien statt in stdout oder stderr protokolliert werden.Oftmals finden Sie darin einen Hinweis.
  • Ihr Windows-Dienst ist möglicherweise darauf angewiesen, dass vor dem Start einige Windows-Netzwerkeinstellungen vorgenommen werden.Dies kann an der Umgebung (PATH, wie andere vorgeschlagen haben) oder an „Abhängigkeiten“ von anderen Diensten liegen.

Jay.........

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top