web-dev-qa-db-fra.com

Impossible de démarrer le service à partir de la ligne de commande ou du débogueur

J'ai créé un service Windows et l'ai installé sur un serveur. Il semble bien fonctionner, c'est-à-dire faire ce que son intention était de faire. Mais lorsque je me connecte au serveur via le bureau à distance, je reçois ce message:

Impossible de démarrer le service à partir de la ligne de commande ou du débogueur. Un service Windows doit d'abord être installé (à l'aide de installutil.exe), puis démarré avec ServerExplorer, l'outil d'administration des services Windows ou la commande NET START.

Je clique sur puis je vais dans l'explorateur de services pour vérifier le service, ça a commencé ok. Aucune erreur signalée.

J'ai installé cela pour qu'il utilise le système local comme "Ouvrir une session en tant que".

Merci.

28
Boomerang

Modifiez la méthode Main dans la classe Program comme suit:

    /// <summary>
    ///   The main entry point for the application.
    /// </summary>
    private static void Main()
    {
        var myService = new MyService();
        if (Environment.UserInteractive)
        {
            Console.WriteLine("Starting service...");
            myService.Start();
            Console.WriteLine("Service is running.");
            Console.WriteLine("Press any key to stop...");
            Console.ReadKey(true);
            Console.WriteLine("Stopping service...");
            myService.Stop();
            Console.WriteLine("Service stopped.");
        }
        else
        {
            var servicesToRun = new ServiceBase[] { myService };
            ServiceBase.Run(servicesToRun);
        }
    }

Vous devez ajouter une méthode Start à votre classe de service:

    public void Start()
    {
        OnStart(new string[0]);
    }

Modifiez le type de sortie du projet en "Application console" au lieu de "Application Windows" dans l'onglet "Application" des propriétés du projet. Maintenant, vous pouvez simplement appuyer sur F5 pour démarrer le débogage, mais vous pouvez toujours exécuter l'exécutable en tant que service Windows.

41
Jeroen Kok