Le démarrage d'un service Windows échoue avec l'erreur 1053
J'ai un service windows qui est un échec pour commencer, en donnant un message d'erreur "Erreur 1053: Le service n'a pas répondu à la demande de lancement ou de contrôle en temps opportun".
L'exécution du service dans mon débogueur fonctionne bien, et si je double-cliquez sur le service .exe sur la machine distante d'une fenêtre de console s'ouvre et continue de fonctionner sans problème, je peux même voir les messages du journal en me montrant que le programme est en cours de traitement tout de la façon dont il devrait être.
Le service avait été en cours d'exécution fine précédemment, c'est ma première fois, personnellement, en essayant de le déployer avec les modifications les plus récentes apportées au programme. J'ai évalué les changements en cours et ne peux pas comprendre comment ils peuvent causer ce problème, particulièrement depuis tout fonctionne très bien lorsqu'il n'est pas lancé comme un service.
La StartRoutine() la méthode du service impelmentation est vide, donc devrait être de retour dans un "temps opportun".
J'ai vérifié les journaux d'événements sur l'ordinateur, et il ne donne pas d'autres informations que il n'a pas entendu revenir sur le service dans les 30 secondes délai prescrit.
Car il fonctionne sur ma machine, et comme un double-clic sur l'exécutable, comment dois-je faire pour essayer de comprendre pourquoi il ne parvient pas en tant que service?
Oh, et il est .NET 2.0, donc il ne devrait pas être affectée par le framework 1.1 bug qui présentait ce symptôme (http://support.microsoft.com/kb/839174)
La boîte est un windows server 2003 R2 machine exécutant SP2.
source d'informationauteur Matt
Vous devez vous connecter pour publier un commentaire.
Pourrait être un certain nombre de choses, et il pourrait aider à obtenir une trace de la pile sur la machine présente le problème. Il y a un certain nombre de façons de le faire, mais le point est que vous devez voir où cela est par défaut dans le code.
Vous pouvez faire cela avec débogage à distancemais d'une simple c'est peut-être suffit de vous connecter à l'enregistreur d'événements, ou d'un fichier journal, si vous en avez. Littéralement, mettre "WriteLine("À la classe::fonction()") tout au long des portions de code pour voir si vous l'avez fait là.
Cela permettra au moins de vous cherchez dans la bonne direction (qui est en fin de compte le code).
Mise à jour:
Voir Microsoft Comment Déboguer les Services Windows l'article pour plus de détails dans le dépannage des problèmes de démarrage à l'aide de WinDbg.
Ce une question relative à la détails nice moyens pour déboguer les services qui sont écrits dans .NET.
C'est une erreur trompeur. C'est probablement une exception non gérée.
Vider votre OnStart() gestionnaire ensuite, essayez ceci dans votre constructeur...
Maintenant, vérifiez le Journal des événements sur votre système pour votre Application d'Erreur.
Je suis d'accord avec Scott, la meilleure façon de savoir ce qui se passe est de mettre un peu de traces dans les start-up de code (peut-être qu'il ne vient même pas à votre start-up code).
Si cela ne vous aide pas, vous pouvez poster ici votre code afin que d'autres peuvent prendre un coup d'oeil.
manque peut-être certains de la dépendance, essayez ce qui suit :
- radier votre service
- enregistrer à nouveau
Si échec au registre signifie que l'absence d'un module.
Si le StartRoutine est vide, vous êtes probablement à partir ailleurs.
IIRC vous avez besoin pour déclencher un thread de travail, et ensuite de retour à partir de StartRoutine.
L'un des problèmes qui peuvent entraîner cette erreur est si windows service qui doit être déployé se compose d'une erreur que j'ai.e il peut être simple autorisation d'erreur ou quoi que ce soit comme dans mon cas, j'ai référencé des dossiers et des fichiers de journalisation qui ne sont pas existantes, mais lorsque le droit chemin de ces fichiers et dossiers qu'il a résolu mon problème.
J'ai couru à travers tous les post sur ce sujet particulier et aucune des réponses résolu le problème, je suis donc l'ajout de cette réponse dans le cas où cela aide quelqu'un d'autre. Il est vrai que cela s'applique seulement à un nouveau service, pas de ce cas précis.
J'ai écrit un Fichier de service d'écoute. Comme une application console, il a parfaitement fonctionné. Lorsque je l'ai exécuté en tant que service, j'ai eu la même erreur que ci-dessus. Ce que je ne savais pas (et de nombreux articles MSDN sur les services de laisser facilement), c'est que vous devez avoir votre classe exécutée dans ServiceBase.Exécuter( YourClassName());. Sinon, votre application s'exécute et se termine immédiatement et parce qu'il est résilié, vous obtenez le message d'erreur ci-dessus, même si aucune erreur ou exception s'est produite. Voici un lien vers un article à ce sujet. Il en fait traite de la configuration de votre application pour une utilisation double, Console application et de service: Créer une zone de liste déroulante de la ligne de commande /service Windows app
J'ai eu ce problème et la source de mon problème était le fichier de configuration. J'ai édité le fichier dans le bloc-notes et bloc-notes ajouté un caractère spécial qui cause le service de ne pas fonctionner correctement à cause de fichier de configuration a été ruiné. J'ai vu que les caractères spéciaux dans notepad++ et après le supprimer, le service a commencé à exécuter avec succès que les précédents n'.
Dans mon cas, le corriger .NET framework n'est pas installé sur le serveur que j'était en train d'installer le service Windows sur.
Une autre raison est que Si vous copiez la DLL dans "debug mode" du dossier d'installation de cette question permettra de venir.Ce que vous devez faire est d'Exécuter le projet dans "Libération" mode de copie de la DLL ou directement le formulaire de dossier de Version plutôt que dossier de Débogage, et de copier la DLL dans le dossier d'installation,il fonctionne.Vous pouvez voir la réduction de la taille de DLL ,il ne contiendra pas de symboles de débogage et comme ça