c# .net windows-services timeout

c# - "Se alcanzó un tiempo de espera mientras se esperaba que el servicio se conectara" error después de reiniciar



.net windows-services (7)

Creo que también pude haber encontrado otro factor que contribuye a este tipo de no se inicia en el error de reinicio.

Parece que si el registro de eventos de Windows está configurado para sobrescribir eventos> 7 días ... tamaño 512kb ... Pero se ha producido una gran actividad dentro de esta ventana, entonces el registro de eventos está lleno porque no puede sobrescribir el número de eventos generados en el interior ese marco de tiempo. Si configura el registro de eventos en un tamaño mucho más grande O para sobrescribir según sea necesario, entonces no experimentará este problema

Tengo un servicio de Windows escrito a medida que ejecuto en varias VM de Hyper-V. Las máquinas virtuales se reinician un par de veces por hora como parte de algunas pruebas automáticas que se están ejecutando. El servicio está configurado para inicio automático y casi todo el tiempo, se inicia correctamente.

Sin embargo, tal vez el 5% de las veces, sin un patrón que yo pueda discernir, el servicio no se inicia. Cuando falla, aparece un error en el Visor de eventos que dice

Se alcanzó un tiempo de espera (30000 milisegundos) mientras esperaba que se conectara el servicio My Service Name.

Cuando esto ocurre, puedo iniciar el servicio manualmente, o reiniciar de nuevo, y el servicio comenzará bien.

Lo que no puedo entender es que el tiempo de espera de 30 segundos no parece estar ocurriendo en mi código. La primera línea del método OnStart () de mi clase de servicio registra "Starting ..." en su log4net log. Cuando el servicio no se inicia, ni siquiera recibo nada registrado, lo que me indica que log4net no puede iniciar sesión por el motivo que sea, o que se agota el tiempo de espera antes de que se llame a OnStart ().

El servicio se ejecuta en una variedad de sistemas operativos, desde XP hasta Win7 y 2008R2, y sé que configurar el servicio para el inicio retrasado puede resolver esto para Vista y más tarde, pero eso parece un truco.

No he podido depurar esto de forma remota debido al hecho de que ocurre de forma tan intermitente y durante el inicio del sistema, y ​​no entiendo cómo se puede descubrir qué está sucediendo. ¿Algunas ideas?


Es posible que desee ver esta post , no es idéntica a su situación, pero la solución ofrece consejos acertados sobre los servicios de Windows y la funcionalidad de inicio.


Estaba viendo este error en el Visor de eventos al intentar instalar un servicio con PowerShell.

El problema que tuve fue que tenía diferentes valores para "Nombre del servicio" y "Nombre de visualización del servicio" en mi script de powershell para los que había especificado en el archivo program.cs de mi aplicación de consola.


Estamos teniendo el mismo problema en el servidor de Windows 2016.

Una solución que parece estar funcionando es cambiar el usuario bajo el cual se ejecuta el servicio desde la cuenta de servicio local al administrador local (no estoy seguro de cuál es la causa).


Mi problema con el mismo error fue que la instalación .Net en el servidor no funcionaba correctamente.

Para resolver esto:

Hice una pequeña aplicación de consola con una lógica idéntica a la del servicio en ejecución, e hice un try-catch alrededor de todo el código, dándolo todo a la consola.

No estoy seguro de por qué la información no brotó, pero vimos los valiosos mensajes sobre los errores del Marco que de otra manera nunca hubiéramos visto.


Mi suposición, y eso es todo, es que el disco se está agotando durante el inicio, hasta el punto en que .NET Framework no se inicia en los 30 segundos que Windows asigna para que se inicien los servicios.

Una solución kludgy puede ser establecer el servicio para que se inicie manualmente, luego escriba un servicio de stub muy pequeño en un código no administrado (por ejemplo, C ++, Delphi) para iniciar el servicio.

Otro enfoque puede ser iniciar el servicio de forma remota desde otra máquina. El comando sc debería hacer el trabajo bien.


Por lo que vale, descubrí que recibí este mensaje (casi inmediatamente después del inicio del servicio) porque no tenía instalada la versión 4.5 de .NET Framework en el equipo de destino. Revertí la versión que estaba usando a la versión 4.0 (que ya estaba instalada en la máquina de destino) y el servicio funcionó como se esperaba.