2010-09-15 11 views
12

Mon démarrage automatique du service Windows ne démarre pas au redémarrage. J'ai un service Windows créé en C# et installé via un programme d'installation créé par Wix. Le service est configuré pour démarrer automatiquement. Le service est installé et exécuté sous le service NT AUTHORITY \ NETWORK SERVICE. Lorsque le service est démarré, il effectue d'abord un appel de services Web externe.Le service Windows ne démarre pas automatiquement après le redémarrage

Sous Windows 7, je peux régler le service sur Automatique - Démarrage différé et le service démarrera au redémarrage sans problème. Toutefois, cette option n'est pas disponible dans Windows XP, et lorsqu'il est réglé sur démarrage automatique, le service échoue en raison d'

A timeout was reached (30000 milliseconds) while waiting for the MyService service to connect.

Si je tente de démarrer manuellement une fois le processus de connexion, le service démarre bien, il est Ce n'est que lorsque le service essaie de démarrer automatiquement au redémarrage qu'il y a un problème, ce qui m'amène à croire qu'il y a des services de dépendance que j'ai besoin d'ajouter à mon service pour qu'il démarre correctement.

Quelqu'un peut-il me diriger vers les dépendances correctes ou une approche alternative?

Répondre

11

Vous avez probablement une condition de concurrence avec une dépendance. Vous pourriez probablement patcher autour de ceci en configurant votre service pour avoir une dépendance sur un autre service (disons tcp/ip) mais ce que je ferais vraiment est de réécrire votre service pour ne pas avoir besoin de faire cet appel pendant le chemin d'exécution critique du démarrage. Au lieu de cela, il devrait périodiquement tenter d'effectuer l'appel webservice ultérieurement et consigner des messages utiles ou envoyer des messages à un utilitaire de la barre des tâches ou similaire si un problème doit être résolu.

+0

J'ai pensé à faire les deux. Le problème est que l'appel est fait pour récupérer les paramètres de configuration à distance et en tant que tel est intégré dans les paramètres en tant qu'extension de SettingsProvider. –

+1

Désolé, mais cela doit être fait. Le design de base est fragile au mieux. Le Web est sans état et supposer que tout le reste est faux. –

+1

J'ai suivi votre conseil et fait en sorte que ma méthode OnStart() fasse la fonctionnalité minimum et démarre une minuterie qui s'exécute plus tard pour dérouler les paramètres de configuration et initialiser la fonctionnalité du service. –

0

J'ai eu le même problème sur 4 nouveaux serveurs. J'ai mis le service W32 pour retarder automatique et il a résolu le problème.