Ausführen eines C# Konsole-Anwendung als Windows-Dienst
Habe ich eine basic-C# - Konsolenanwendung, ich möchte als Windows-Dienst ausgeführt.
Erstellt habe ich den Windows-Dienst mithilfe sc create
. Dies funktionierte gut, und ich kann sehen, meinen Dienst unter services.msc
. Wenn ich versuche diesen Dienst starten bekomme ich folgende Fehlermeldung:
Konnte nicht gestartet werden, das PROJEKT-Dienst auf dem Lokalen Computer. Fehler 1053: Der Dienst antwortete nicht rechtzeitig auf die start-oder Steuerungsanforderung rechtzeitig.`
Habe ich gelesen, dass dies möglicherweise aufgrund der service-code an, die länger als 30000 ms ausführen. Daher entfernte ich den Großteil des Codes, so dass kaum etwas ausgeführt wird.. doch der gleiche Fehler besteht weiterhin.
Ich bin mit .NET 3.5 für dieses Projekt.
Was würde das verursachen?
- Haben Ihren Prozess tatsächlich begonnen? Ich vermute, es wird nicht gestartet,
- stackoverflow.com/questions/593454/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie nicht nur nehmen Sie alle Konsole-Anwendung und läuft als Windows-Dienst. Zuerst müssen Sie, um Ihre service-Klasse, die Erben von
ServiceBase
, dann in Einstiegspunkt (Main
) müssen Sie die Ausführung der Dienstleistung mitServiceBase.Run(new YourService())
. In Ihrer service-Klasse, die Sie definieren müssen, was passiert, wenn der Dienst beginnt und endet.Idealerweise sollten Sie ServiceInstaller, um Ihre Montage zu. Auf diese Weise werden Sie in der Lage sein, um die voreingestellte Ihre service-Eigenschaften und Verwendung installutil.exe um den Dienst zu installieren.
Exemplarische Vorgehensweise: Erstellen einer Windows-Dienstanwendung im Komponenten-Designer ist eine Exemplarische Vorgehensweise zum erstellen eines service.
Nicht jede alte Anwendung kann als Dienst ausgeführt werden, vor allem unter neueren Versionen von Windows. Sie werden erwartet, um bestimmte Funktionen zu unterstützen, reagieren auf bestimmte Anforderungen, und (wieder unter neueren Windows-Versionen) nicht mit dem Benutzer interagieren direkt.
Wenn Sie möchten, ein service, eine Anwendung schreiben, die speziell entwickelt, um ein service.
Ich weiß nicht, was "sc create" ist. Aber ich weiß, mithilfe von Visual Studio 2010, kann man eine Windows-Dienst-Projekt. Durch die Art und Weise, die ich erstellt habe, ein Projekt dieser Art und es funktioniert auch alles Weg.
sc create
ist, wie können Sie installieren windows-Dienst, auch wenn Sie nicht über installer innerhalb der assembly.(Leider kann ich nicht schreiben, einen Kommentar noch.)
Es ist, weil der SCM (Service Control Manager) steuert die service Trog ServiceBase-Klasse. Würde man nur brauchen, um zu definieren, was es macht, wenn es startet und Stoppt gäbe es keine Notwendigkeit für die Vererbung und das überschreiben. Man könnte einfach erstellen Sie diese beiden Methoden. Leider gibt es ein bisschen mehr Arbeit beteiligt, weil ServiceBase enthält ein bisschen mehr Funktionalität.
Ich habe großen Erfolg mit TopShelf. Dies ist ein nuget-package, mit dem Ihr .NET-Konsole app, um auch die notwendige Windows-Dienst Haken, so dass es leicht auszuführen, entweder als eine Konsole app (nützlich zum Debuggen), oder als Windows-Dienst installiert.