2010-09-15 18 views
12

Mi servicio de Windows que se inicia automáticamente no se inicia solo al reiniciar. Tengo un servicio de Windows creado en C# e instalado a través de un instalador creado por Wix. El servicio está configurado para comenzar automáticamente. El servicio está instalado y se ejecuta bajo el servicio NT AUTHORITY \ NETWORK. Cuando se inicia el servicio, primero realiza una llamada de servicios web externos.El servicio de Windows no se iniciará automáticamente después de reiniciar

En Windows 7 puedo configurar el servicio para que sea automático: el inicio demorado y el servicio se iniciará al reiniciar sin problema. Sin embargo, esta opción no está disponible en Windows XP, y cuando se establece en inicio automático, el servicio falla debido a

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

Si intento iniciar manualmente después del proceso de inicio de sesión, el servicio se inicia bien, es solo cuando el servicio intenta iniciarse automáticamente al reiniciarse, existe un problema, lo que me lleva a pensar que hay servicios de dependencia que necesito agregar a mi servicio para que se inicie correctamente.

¿Alguien me puede indicar las dependencias correctas o un enfoque alternativo?

Respuesta

11

Es probable que tenga una condición de carrera con una dependencia. Probablemente podría parchear esto configurando su servicio para que tenga una dependencia en otro servicio (digamos tcp/ip) pero lo que realmente haría es reescribir su servicio para no tener que realizar esta llamada durante la ejecución crítica del inicio. En su lugar, debe intentar periódicamente realizar la llamada al servicio web en un momento posterior y registrar mensajes útiles o enviar mensajes a una utilidad de la barra de tareas o similar si hay un problema que deba abordarse.

+0

He pensado en hacer ambas cosas. El problema es que la llamada se realiza para recuperar la configuración de configuración remota y, como tal, está integrada en la Configuración como una extensión de SettingsProvider. –

+1

Lo sentimos, pero debe hacerse. El diseño básico es, en el mejor de los casos, frágil. La red no tiene estado y suponer que es cualquier otra cosa está mal. –

+1

Tomé su consejo e hice que mi método OnStart() hiciera la mínima funcionalidad y comencé un temporizador que se ejecuta más tarde para desplegar los ajustes de configuración e inicializar la funcionalidad del servicio. –

0

Tuve el mismo problema en 4 nuevos servidores. Configuré el servicio W32 para retrasar automático y resolvió el problema.

Cuestiones relacionadas