wake-up-neo.com

Einige Dienste werden automatisch angehalten, wenn sie nicht von anderen Diensten verwendet werden

Fehler "Einige Dienste stoppen automatisch, wenn sie nicht von anderen Diensten verwendet werden", während versucht wird, einen Windows-Dienst zu starten. 

Ich habe einen Dienst, der die Windows-Dienstkonfigurationsdatei nicht verwendet und statische Eigenschaften verwendet - es funktioniert einwandfrei

Jetzt benutze ich die app.config-Datei und baue mein Setup-Projekt + das Service-Projekt neu auf. Nun installiere ich den Dienst und versuche dann, den Dienst zu starten. Ich erhalte folgende Fehlermeldung:

EINIGE DIENSTLEISTUNGEN STOPPEN AUTOMATISCH, WENN SIE NICHT VON ANDEREN DIENSTLEISTUNGEN BENUTZT WERDEN

Dienst meldet sich als lokales System an.

Jede Eingabe ist willkommen, bitte! Vielen Dank. 

17
paras_doshi

Dies ist im Allgemeinen das Ergebnis von zwei Dingen - entweder (a) Ihre OnStart()-Methode löst eine Ausnahme aus oder (b) die OnStart()-Methode startet nicht einen Thread, um ihre Arbeit auszuführen.

Wenn das Problem (a) ist, besteht die naheliegende Lösung darin, den Dienst zu debuggen, um festzustellen, was schief geht. Setzen Sie mindestens einen try-catch-Block um den Inhalt der OnStart()-Methode und protokollieren Sie einen Fehler im Systemereignisprotokoll, wenn eine Ausnahme auftritt. Anschließend können Sie die Details in der Windows-Ereignisanzeige anzeigen.

Wenn das Problem (b) ist, müssen Sie einen Thread erstellen, der tatsächlich etwas tut. Der Thread muss ein Vordergrundthread sein (im Gegensatz zu einem Hintergrundthread), damit der Dienst nicht heruntergefahren wird. Eine typische OnStart()-Methode sieht folgendermaßen aus:

private System.Threading.Thread _thread;

protected override void OnStart(string[] args)
{
    try
    {
        // Uncomment this line to debug...
        //System.Diagnostics.Debugger.Break();

        // Create the thread object that will do the service's work.
        _thread = new System.Threading.Thread(DoWork);

        // Start the thread.
        _thread.Start();

        // Log an event to indicate successful start.
        EventLog.WriteEntry("Successful start.", EventLogEntryType.Information);
    }
    catch (Exception ex)
    {
        // Log the exception.
        EventLog.WriteEntry(ex.Message, EventLogEntryType.Error);
    }
}

private void DoWork()
{
    // Do the service work here...
}
35
Matt Davis

Ich habe diesen Fehler bekommen und der Grund dafür war, dass die Festplatte voll war. Es könnte alles sein, was den Dienst am Laufen hält.

3
BBoyd

Beim Starten des Dienstes ist derselbe Fehler aufgetreten. Wenn ich Anwendungsprotokolle überprüfe, hängt der Fehler mit Telnet zusammen. Dies bedeutet, dass der Port für Telnet (23) von einem anderen Dienst belegt ist. Zu diesem Zeitpunkt müssen Sie den Ressourcenmanager aufrufen und nach dem Dienst suchen, der den Port 23 verwendet, und diesen deaktivieren Service kann dann der jeweilige Service problemlos starten.

0
Shashidhar

Ich hatte den gleichen Fehler, der darauf zurückzuführen ist, dass beim Ausführen der installUtil.cmd auf meinem serviceInstaller.msi keine dll erstellt wurde. Um das Problem zu beheben, musste ich eine dieser => <File Id="Interception" Source="$(var.SourceDir)\Microsoft.Practices.Unity.Interception.dll" /> für jede DLL, die ich in meinem Projekt erwartet hatte, angeben und sie in meine Service.wxs-Datei einfügen. Wie folgt => <Fragment><DirectoryRef Id="ApplicationDirectory"><Component Id="ServiceID" Guid="$(var.ServiceGuid)"> *here* <closing tags...>. Und stellen Sie sicher, dass alle DLLs in den x-Befehlen des Installers enthalten sind :) 

Hoffe das hilft!

0
CRoberts