Fehler 1053 Der Dienst antwortete nicht rechtzeitig auf die start- oder steuerungs

Halloo!

Ich habe mit C# in Visual Studio 2010 ein Dienst programmiert, welchen ich anschliessend über die Windows-Kommandozeile installiert habe (Mit dem Befehl => “C:\MyService.exe /I”). Der Dienst erschien dann in der Dienstverwaltung, und wurde somit korrekt installiert! Danach habe ich den Dienst manuell starten wollen, jedoch gab mir Windows den Fehler:
fehler 1053: der dienst antwortete nicht rechtzeitig auf die start- oder steuerungsanforderung”. Ich habe den Dienst auch schon automatisch via Kommandozeile starten wollen, jedoch kam dann in der Kommandozeile der genau gleiche Fehler.

Meinen Code habe ich nach dem klassischen Windows-Service Template - Code von Visual Studio 2010 aufgebaut (Mit “OnStart” Methode usw.). Hier der gesamte Code mit allen Übergabeparametern und mit der Eingabeaufforderung in der Main-Methode usw.:


[CSHARP]
class Program : ServiceBase
{
public static string ServiceName = “MeinDienst”;
public static string ServiceDescription =
“Test…”;

protected override void OnStart(string[] args)
{
}

protected override void Dispose(bool disposing)
{
    //clean your resources if you have to => to clean objects who aren't in use anymore.
    base.Dispose(disposing);
}

private static bool IsServiceInstalled()
{
    return ServiceController.GetServices().Any(s => s.ServiceName == ServiceName);
}

private static void InstallService()
{//Deinstall service if it's already installed
    if (IsServiceInstalled())
    {
        UninstallService();
    }
    ManagedInstallerClass.InstallHelper(new string[] { Assembly.GetExecutingAssembly().Location });
}

private static void UninstallService()
{
    ManagedInstallerClass.InstallHelper(new string[] { "/u", Assembly.GetExecutingAssembly().Location });
} 

static void Main(string[] args)
{
    if (args.Length > 0)
    {//If an argument (e.q. a user input with cmd) has been done, do an Install or Uninstall
        for (int ii = 0; ii < args.Length; ii++)
        {
            switch (args[ii].ToUpper())
            {
                case "/I":
                    InstallService();
                    return;
                case "/U":    
                    UninstallService();
                    return;
                default:
                    break;
            }
        }
    }
}

}
[/CSHARP]

[CSHARP]
[RunInstaller(true)]
public class CustomServiceInstaller : Installer
{
private ServiceProcessInstaller process;
private ServiceInstaller service;

public CustomServiceInstaller()
{
    process = new ServiceProcessInstaller();
    process.Account = ServiceAccount.LocalSystem;
    service = new ServiceInstaller();
    service.ServiceName = Program.ServiceName;
    service.Description = Program.ServiceDescription;

[/CSHARP]

(ich kann wegen eines Fehlers bei mir nicht das erste Posting editieren für bessere Code-Darstellung)

wenn ich mir ohne jede Kenntnisse den Link
http://www.thedavejay.com/2012/04/self-installing-c-windows-service-safe.html
anschaue

dann steht dort in der main noch ein Block


            if (debugMode)
            {
                Program service = new Program();
                service.OnStart(null);
                Console.WriteLine("Service Started...");
                Console.WriteLine("<press any key to exit...>");
                Console.Read();
            }
            else
            {
                System.ServiceProcess.ServiceBase.Run(new Program());
            }

hast du entsprechendes?
gerade das erste sieht doch nach ‘Dienst antwortet’ aus, was die Fehlermeldung bemeckert,
ohne Debug bei dir schlicht die eine Zeile System.ServiceProcess.ServiceBase.Run(new Program()); ergänzen?

Install und Uninstall hast du auch eingebaut, aber was soll im normalen Aufruf passieren?
man könnte freilich interpretieten dass eine leer auslaufende main-Methode einem Programm-Start mit leerer onStart() entspricht, aber muss ja aus Systemsicht nicht gleich sein

DANKESCHÖN!!!

So einfach kann’s sein!!

Hatte schlicht und einfach die Zeile zum Starten vom Dienst nicht geschrieben:

System.ServiceProcess.ServiceBase.Run(new Program());

Jetzt funktioniert alles. :slight_smile: