it-swarm.com.de

Fehler 1053 Der Dienst hat auf die Start- oder Steuerungsanforderung nicht rechtzeitig reagiert

Ich habe einige Male einen Dienst erstellt und installiert. Anfangs funktionierte es einwandfrei, aber nach einigen Änderungen im Dienstcode wurde der Fehler angezeigt, wenn der Dienst in Services.msc neu gestartet wurde:

Fehler 1053: Der Dienst hat nicht rechtzeitig auf die Start- oder Steuerungsanforderung geantwortet

Code:

public partial class AutoSMS : ServiceBase
{
    public AutoSMS()
    {
        InitializeComponent();
        eventLog1.Clear();

        if (!System.Diagnostics.EventLog.SourceExists("MySource"))
        {
            System.Diagnostics.EventLog.CreateEventSource(
                "MySource", "MyNewLog");
        }
        eventLog1.Source = "MySource";
        eventLog1.Log = "MyNewLog";

        Timer checkForTime = new Timer(5000);
        checkForTime.Elapsed += new ElapsedEventHandler(checkForTime_Elapsed);
        checkForTime.Enabled = true;

    }

    protected override void OnStart(string[] args)
    {
        eventLog1.WriteEntry("In OnStart");
    }

    protected override void OnStop()
    {
        eventLog1.WriteEntry("In onStop.");
    }


    void checkForTime_Elapsed(object sender, ElapsedEventArgs e)
    {
        string Time = "15:05:00";
        DateTime dateTime = DateTime.ParseExact(Time, "HH:mm:ss",
                                        CultureInfo.InvariantCulture);

        if (DateTime.Now == dateTime) ;
            eventLog1.WriteEntry(Time);
    }
}

Hier ist mein Hauptmethodencode

static void Main()
{
    ServiceBase[] ServicesToRun;
    ServicesToRun = new ServiceBase[] 
    { 
        new AutoSMS() 
    };
    ServiceBase.Run(ServicesToRun);
}

Ich habe auch folgende Schritte ausprobiert:

  • Gehen Sie zu Start> Ausführen> und geben Sie regedit ein
  • Navigieren Sie zu: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control
  • Klicken Sie bei ausgewähltem Steuerordner mit der rechten Maustaste in das Fenster auf der rechten Seite und wählen Sie neuen DWORD-Wert aus
  • Benennen Sie das neue DWORD: ServicesPipeTimeout 
  • Klicken Sie mit der rechten Maustaste auf ServicesPipeTimeout, und klicken Sie dann auf Ändern
  • Klicken Sie auf Dezimal, geben Sie '180000' ein und klicken Sie dann auf OK
  • Starte den Computer neu

Ich habe es mit folgendem Befehl installiert und deinstalliert:

installutil AutoSMS.exe

installutil /u AutoSMS.exe
40
Neeraj Verma

In meinem Fall habe ich den Dienst veröffentlicht, während er sich im Debug-Modus befand.

Lösung war:

  • Lösung in Freigabemodus ändern  
  • Deinstallieren Sie den alten Dienst mit dem Befehl InstallUtil -u WindowsServiceName.exe.
  • service erneut installieren InstallUtil -i WindowsServiceName.exe

Danach hat es perfekt funktioniert.

20
Pranav Singh

Wie andere darauf hingewiesen haben, kann dieser Fehler eine Vielzahl von Ursachen haben. Aber in der Hoffnung, dass dies jemandem helfen wird, teile ich mit, was in unserem Fall passiert ist. Für uns wurde unser Service auf .NET 4.5 aktualisiert, auf dem Server war jedoch kein .NET 4.5 installiert. 

19
JamesQMurphy

Ich habe diesen Code lokal in .Net 4.5 ausprobiert und der Dienst startet und stoppt korrekt für mich. Ich vermute, Ihr Problem könnte darin bestehen, die EventLog-Quelle zu erstellen.

Die Methode:

EventLog.SourceExists("MySource")

erfordert, dass der Benutzer, der den Code ausführt, ein Administrator sein muss, wie in der Dokumentation hier beschrieben:

http://msdn.Microsoft.com/en-us/library/x7y6sy21(v=vs.110).aspx

Stellen Sie sicher, dass der Dienst als Benutzer mit Administratorrechten ausgeführt wird.

9
devduder

Ich hatte das gleiche Problem und war mir überhaupt nicht sicher, wie ich es lösen könnte. Ja, dies tritt auf, weil vom Dienst eine Ausnahme ausgelöst wird. Es gibt jedoch einige allgemeine Richtlinien, die Sie befolgen können, um dies zu beheben:

  • Stellen Sie sicher, dass Sie den richtigen Code geschrieben haben, um den Dienst zu starten: ServiceBase[] ServicesToRun; ServicesToRun = new ServiceBase[] { new WinsowsServiceToRun() }; ServiceBase.Run(ServicesToRun);
  • Sie müssen sicherstellen, dass in der Klasse WinsowsServiceToRun eine Art Endlosschleife ausgeführt wird

  • Schließlich gibt es möglicherweise Code, der nichts protokolliert und das Programm abrupt schließt (was bei mir der Fall war). In diesem Fall müssen Sie der alten Debugging-Schule folgen, die erforderlich ist, um eine Zeile in eine Quelle zu schreiben (Text/db/wo auch immer). Ich stand vor der Tatsache, dass der Code nicht "Admin" war, sondern der Code einfach abfiel und keine Ausnahmen protokollierte, falls versucht wurde, in "Windows Event Log" zu schreiben, obwohl der Code zum Protokollieren von Ausnahmen vorhanden war . Admin-Berechtigungen sind für die Protokollierung in Even Log nicht erforderlich, aber zur Definition der Quelle. Falls die Quelle des Ereignisses nicht bereits im System definiert ist und der Dienst versucht, das erste Mal ohne Administratorberechtigung zu protokollieren, schlägt der Vorgang fehl. Um dies zu lösen, folgen Sie den folgenden Schritten:

    1. Öffnen Sie den Befehl Eingabeaufforderung mit Administratorrechten
    2. Fügen Sie den Befehl ein: eventcreate /ID 1 /L APPLICATION /T INFORMATION /SO <<Source>> /D "<<SourceUsingWhichToWrite>>"
    3. Drücken Sie Enter
    4. Starten Sie nun den Dienst
9
Akash Sahay

Aufgrund des Microsoft Windows-Dienststeuerelements wird manchmal der Status der Dienste gesteuert. Wenn der Dienst innerhalb von 30 Sekunden keine Antwort sendet, wird diese Fehlermeldung angezeigt.

Sie können die Registrierung ändern, sodass der Dienst mehr Zeit zum Antworten hat

Go to Start > Run > and type regedit
Navigate to: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control
With the control folder selected, right click in the pane on the right and select new DWORD Value
Name the new DWORD: ServicesPipeTimeout 
Right-click ServicesPipeTimeout, and then click Modify
Click Decimal, type '180000', and then click OK
Restart the computer

Oder seien Sie sicher, dass es in diesem Moment keinen anderen Prozess gibt, mit dem Dienst zu sprechen. Vielleicht gibt es einen Konflikt, den ich nicht kenne

4
Alberto Perez

Nachdem ich zu viel Zeit mit diesem Thema verbracht habe. Ich fand die EventLog Ursache für all das Durcheinander, obwohl ich es richtig verwendet habe.

Wer dieses Problem angeht, würde ich vorschlagen, die EventLog..__ zu entfernen. Benutze bessere Tools wie " log4net ".

4
Jacob

Nachdem ich einige Zeit damit verbracht hatte, Lösungen zu finden, die nicht funktionierten, stieß ich auf dieses Blog . Es wird empfohlen, den Dienstinitialisierungscode in einen Try/Catch-Block wie folgt einzuhüllen und EventLog hinzuzufügen

using System;
using System.Diagnostics;
using System.ServiceProcess;

namespace WindowsService
{
    static class Program
    {
        static void Main()
        {
            try
            {
                ServiceBase[] ServicesToRun;
                ServicesToRun = new ServiceBase[] 
                { 
                    new Service1() 
                };
                ServiceBase.Run(ServicesToRun);
            }
            catch (Exception ex)
            {
                EventLog.WriteEntry("Application", ex.ToString(), EventLogEntryType.Error);
            }
        }
    }
}

Deinstallieren Sie anschließend den alten Dienst und stellen Sie den Dienst mit diesen Änderungen erneut bereit. Starten Sie den Dienst und checken Sie die Ereignisanzeige/Anwendungsprotokolle aus. Sie werden sehen, was das eigentliche Problem ist, was der Grund für das Timeout ist.

3
JS5

Ich bekam genau das gleiche Problem. Alles, was ich getan habe, ist, den Debug-Modus in Release zu ändern, während die DLL kompiliert wird. Dies hat mein Problem gelöst, wie/warum? Ich weiß nicht, dass ich bereits eine Frage gestellt habe zu SO 

2
ahsant

Überprüfen Sie ConnectionStrings, wenn Sie EntityFramework oder ein anderes Mittel verwenden, um Datenbankverbindungen beim Start des Dienstes zu initiieren.

In meinem Fall, als ich den Fehler Error 1053 the service did not respond to the start or control request in a timely fashion bekam, lief Folgendes schief:

Ich habe EntityFramework verwendet und die Verbindungszeichenfolgen waren falsch. Grundsätzlich konnte das EntityFramework beim Start keine Verbindung mit der Datenbank herstellen, indem die falsche Verbindungszeichenfolge verwendet wurde und das Zeitlimit überschritten wurde.

Ich musste nur die Datenbankverbindungszeichenfolge durch die richtige ersetzen und es hat gut funktioniert.

Benötigte kein Framework-Update oder sonstige System-/Konfigurationsänderungen.

Eine mögliche Lösung für dieses Problem [Es wurde ein Problem an meinem Ende behoben und meine Anwendung ist Java -basierte Anwendung]:

1) Prüfen Sie, ob Ihre Anwendung auf die korrekte Java-Version verweist (überprüfen Sie die Java-Version und den Pfad in Ihrer Anwendung).

ODER

2) Überprüfen Sie die konfigurierte Java-Version. Überprüfen Sie, ob es sich um eine 32-Bit-Version oder eine 64-Bit-Version (basierend auf Ihrer Anwendung) handelt. Wenn Sie 32-Bit verwenden, sollten Sie die 32-Bit-Version von JSL verwenden. Andernfalls verursacht JSL dieses Problem.

1
Suresh Reddy

Ich habe .Net 4.6 auf meinem WindowsServer-Computer installiert und der Fehler wurde behoben.

Ihre Kontrolle sollte folgendermaßen sein:

  1. Überprüfen Sie die .NET-Version Ihres Windows-Dienstes
  2. Überprüfen Sie dann die .net-Version Ihres Computers
  3. Passen Sie auf diese Version an, da sie wahrscheinlich nicht passt
1
Metin Atalay

Das hat bei mir funktioniert. Vergewissern Sie sich grundsätzlich, dass der Benutzer "Anmelden" auf den richtigen Benutzer eingestellt ist. Es hängt jedoch davon ab, wie die Kontoinfrastruktur eingerichtet wird. In meinem Beispiel werden AD-Konto-Anmeldeinformationen verwendet. 

Suchen Sie im Startmenü nach "Services" -In Services finden Sie den erforderlichen Service Klicken Sie mit der rechten Maustaste auf und wählen Sie die Registerkarte Anmelden aus -Wählen Sie "Dieses Konto" und geben Sie den erforderlichen Inhalt bzw. die erforderlichen Anmeldeinformationen ein -Ok und starten Sie den Dienst wie gewohnt

 enter image description here

1
d689p

dieser Fehler kann verschiedene Ursachen haben. Um den Grund zu ermitteln, fügen Sie try/catch hinzu, wenn der Dienst ausgeführt wird.

        try
            {
                ServiceBase[] ServicesToRun;
                ServicesToRun = new ServiceBase[] 
                { 
                    new Service1() 
                };
                <span class="skimlinks-unlinked">ServiceBase.Run(ServicesToRun</span>);
            }
            catch (Exception ex)
            {
                EventLog.WriteEntry("Application", ex.ToString(), <span class="skimlinks-unlinked">EventLogEntryType.Error</span>);
            }
0
DevT

ein möglicher Grund ist:

nichtübereinstimmung der Windows-Dienst-NET-Version und der System-NET-Version.

0
Divyang Shah

Dies wird normalerweise durch eine nicht erfasste Ausnahme im Dienst selbst verursacht. (Fehler in der Konfigurationsdatei). Wenn Sie eine Eingabeaufforderung öffnen und die ausführbare Datei des Dienstes manuell starten, wird möglicherweise die Ausnahme angezeigt.

0
Robert Pouleijn

Nach meiner Erfahrung musste ich meinen bestehenden Dienst beenden, um Code zu aktualisieren. Nach dem Aktualisieren des Codes und beim Starten des Dienstes erhielt ich den gleichen Fehler "Fehler 1053 Der Dienst hat nicht rechtzeitig auf die Start- oder Steuerungsanforderung reagiert". 

Dies wurde jedoch nach dem Neustart der Maschine behoben. 

0
KirtiSagar

Ich habe meinen Kopf gekratzt, um diesen Fehler zu löschen Dieser Fehler wird möglicherweise verursacht, wenn Sie ihn im Code debuggen

static void Main()
{
 #if DEBUG
            MailService service = new MailService();
             service.Ondebug();
 #else
             ServiceBase[] ServicesToRun;
             ServicesToRun = new ServiceBase[]
             {
                 new MailService()
             };
             ServiceBase.Run(ServicesToRun);
 #endif
         }
     }

Nach dem Löschen von if,else und endif im Code ist der Fehler nicht mehr aufgetreten .... hoffe es hilft ....

static void Main()
{

    ServiceBase[] ServicesToRun;
    ServicesToRun = new ServiceBase[]
    {
        new MailService()
    };
    ServiceBase.Run(ServicesToRun);

}
0

Aufbau des Dienstes

Um ein Serviceprojekt im Projektmappen-Explorer zu erstellen, öffnen Sie das Kontextmenü für Ihr Projekt und wählen Sie Eigenschaften. Die Eigenschaftsseiten für Ihr Projekt werden angezeigt. Wählen Sie auf der Registerkarte Anwendung in der Liste Startobjekt die Option MyService.Program.

0
Mahdi

Außerdem müssen Sie den Inhalt der Konfigurationsdatei überprüfen. 

Sie müssen unter dem Abschnitt überprüfen.

<startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2"/>
</startup>

Der oben genannte Abschnitt muss mit Ihrem .net-Framework übereinstimmen.

0
NoughT

In meinem Fall ging es um das Zwischenspeichern der Konfiguration, die in der Datei App.config festgelegt ist. Nachdem ich die folgenden Zeilen aus der App.config-Datei entfernt hatte, wurde das Problem behoben.

<cachingConfiguration defaultCacheManager="MyCacheManager">
<cacheManagers>
  <add name="MyCacheManager" type="Microsoft.Practices.EnterpriseLibrary.Caching.CacheManager, Microsoft.Practices.EnterpriseLibrary.Caching, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
       expirationPollFrequencyInSeconds="60"
       maximumElementsInCacheBeforeScavenging="50000"
       numberToRemoveWhenScavenging="1000"
       backingStoreName="NullBackingStore" />
</cacheManagers>
<backingStores>
  <add type="Microsoft.Practices.EnterpriseLibrary.Caching.BackingStoreImplementations.NullBackingStore, Microsoft.Practices.EnterpriseLibrary.Caching, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
       name="NullBackingStore" />
</backingStores>

0
Burak Karakuş

Ich hatte dasselbe Problem . Das Deaktivieren von "SingOn ClickOnce-Manifest", "Signieren der Assembly" und "Aktivieren der ClickOnce-Sicherheitseinstellungen" in den Projekteigenschaften hat geholfen

0
user3210023

Ich weiß, das ist eine alte Frage. Ich habe früher meinen eigenen VB.NET-Windows-Dienst geschrieben, und es ist kein Problem unter MS Windows 7 und MS Windows 10 zu starten. 

Ich habe dieses Problem, wenn ich die Windows-Dienste mit dem neuesten MS Windows 10-Patch installiere. Der Windows-Dienst wird nicht ausgeführt, weil die .NET-Version, die für die Ausführung der Fensterdienste benötigt wird, nicht auf dem installierten PC angezeigt wird.

Nachdem Sie die Windows-Dienste installiert haben. Gehen Sie zum Installationsordner, beispielsweise C:\Programme (x86)\Service1\Service1.exe, und doppelklicken Sie, um ihn auszuführen. Wenn das .NET Framework-Paket fehlt, wird der Benutzer aufgefordert, es herunterzuladen. Einfach herunterladen und warten, bis es installiert wird.

Starten Sie danach die Windows-Dienste in services.msc neu. Ich hoffe, diese Antwort wird jemandem helfen, der sich dem Problem stellt. Ich weiß, dass das Problem durch die .NET Framework-Version verursacht wird.

0
Seng Yee Lee

In meinem Fall hatte ich anscheinend einige zusätzliche Symbole in meiner App.config-Datei, die mir beim Erstellen meiner Lösung nicht aufgefallen sind. Daher empfehle ich, die Konfigurationsdatei zuerst auf Fehler zu prüfen, bevor Schritte zum Ändern der Registrierungsschlüssel und zum Wechseln des Konfigurationsmodus unternommen werden , usw.

0
Anastasia

Ich hatte das gleiche Problem . Anscheinend sollte beim Starten des Dienstes der Haupt-Thread nicht der Hauptarbeitsthread sein Durch einfaches Erstellen eines neuen Threads und Übergeben der Hauptarbeit an diesen Thread wurde mein Problem gelöst.

0

Überprüfen Sie, ob der Startcode des Dienstes korrekt ist.

ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[] 
{ 
    new WinsowsServiceToRun() 
};
ServiceBase.Run(ServicesToRun);

Entfernen Sie außerdem alle Debug-Codes. 

  #If Debug
         ...
         ...
         ...
        #else
         ...
         ...
        #endif
0
Amey P Naik

Ich hatte zwei Dienste ausgeführt, die versehentlich an dieselbe EventSource eventLog.Source = "MySource"; gekoppelt waren. Nachdem beide Dienste deinstalliert und derjenige mit Fehler 1053 neu installiert wurde, wurde mein Dienst normal gestartet.

Ich habe entfernt

EventLog.Exists

und fixiert.

0
cacheoff

Mein Problem war das Problem, bei dem appsettings.json nicht zum Erstellen des Build-Ordners kopiert wurde, und es einfach in den ...\bin\Release-Ordner kopiert und launchSettings.json-Inhalt nach appsettings.json kopiert wurde, wodurch das Problem für mich gelöst wurde.

0
EPS

In dem Fall, dass ich heute Morgen auf jemanden gestoßen bin, war der Täter eine fehlerhafte Konfigurationsdatei. Die Konfigurationsdatei hatte ein Close-Kommentar-Tag ohne das Open-Kommentar-Tag. Überprüfen Sie Ihre Konfigurationsdateien daher noch einmal auf Fehler.

0