web-dev-qa-db-fra.com

Le service Windows s'arrête automatiquement

J'ai créé un service Windows et l'ai laissé fonctionner automatiquement et sous un compte localSystem. Lorsque le service démarre, il envoie ce message pour moi puis s'arrête.

Le service [nom du service] sur l'ordinateur local a démarré puis s'est arrêté. Certains services s'arrêtent automatiquement s'ils ne sont pas utilisés par un autre service ou programme.

Quel est le problème et quelle est la solution?

29
netseng

Soit vous ne démarrez aucun thread sur la méthode OnStart pour fonctionner, soit une exception est générée dans votre méthode OnStart 

Si une exception est levée, elle apparaîtra dans le journal des événements Windows. Le journal des événements Windows est un bon point de départ dans tous les cas.

Généralement, une méthode OnStart ressemble à ceci:

Thread _thread;

protected override void OnStart(string[] args)
{
    // Comment in to debug
    // Debugger.Break()

    // Do initial setup and initialization
    Setup();

    // Kick off a thread to do work
    _thread = new Thread(new MyClass().MyMethod)
    _thread.Start();

    // Exit this method to indicate the service has started
}
38
Robert Wagner

Ce message d'erreur particulier signifie ce qu'il dit - que votre service a commencé mais ensuite il est bientôt sorti pour une raison quelconque. La bonne nouvelle est que votre service est en train de faire quelque chose, vous avez donc l'exécutable configuré et fonctionnant correctement en tant que service.

Une fois commencé, il quitte pour une raison quelconque. Vous devez savoir pourquoi. Ajoutez un peu de débogage pour vous informer des cas de sortie en cours d’exécution et connus. Si cela ne révèle pas le problème, ajoutez un élément de débogage pour vous informer qu'il fonctionne toujours et revenir en arrière à partir de l'arrêt du processus.

6
Mat

Suivez-vous des informations de débogage? Très probablement, une exception est levée lors de votre initialisation. Je tracerais toutes vos exceptions et utiliserais Debugview pour les voir.

3
Mike_G

Un problème similaire s'est produit parce que mes journaux d'événements étaient pleins et que le service n'a pas pu leur écrire. En tant que tel, il était impossible de déboguer en recherchant des messages dans l'observateur d'événements. Je mets un try/catch et décharge l'exception dans un fichier. Je devais modifier les paramètres de mes journaux afin de les remplir au besoin au lieu de tous les 7 jours, ce qui permettait aux services de démarrer. 

Bien sûr, la source du problème est que j'ai un problème de pilote nVidia qui inonde mes journaux d'événements et que maintenant je frappe probablement sur le disque, mais c'est un autre problème.

3
Ken Goodridge

Vous devez peut-être exécuter le service en tant que Compte système local. Voir ce post de Srinivas Ganaparthi .

1
suresh

J'ai eu le même problème en démarrant JBoss, puis j'ai changé la variable Java_HOME, cela a fonctionné pour moi. C'était la version de JBoss qui ne supportait pas la 1.6, mais 1.5.

1
Buminda

J'ai eu un problème similaire et il s'est avéré dans mon cas que le programme s'est simplement bloqué dans la méthode OnStart. Il a essayé de lire un fichier qu’il ne pouvait pas trouver, mais je suppose que tout autre blocage du programme donnerait le même résultat. Dans le cas d'une application Windows Forms, vous obtiendrez un message d'erreur mais ici, c'était simplement "votre service a démarré et s'est arrêté"

Si vous avez besoin, comme moi, de lire des fichiers dans le répertoire où se trouve Windows .exe, cochez la rubrique suivante: Obtention du chemin complet du service Windows

0
RRM