c# - timely - Error 1053 el servicio no respondió a la solicitud de inicio o control de manera oportuna
error 1053 windows server 2012 (24)
A pesar de que había compilado en Debug
, había funcionado. Luego, después de hacer cambios, dio ese error cuando reinicié. Eliminé algunos de los objetos en el Debug file
compilados nuevamente y funcionó.
He creado e instalado un servicio un par de veces. Inicialmente funcionaba bien, pero después de algunos cambios en el Código de servicio, comienza a dar el error cuando reinicio el servicio en Services.msc:
Error 1053: el servicio no respondió a la solicitud de inicio o control de manera oportuna
Código:
public partial class AutoSMS : ServiceBase
{
public AutoSMS()
{
InitializeComponent();
eventLog1.Clear();
if (!System.Diagnostics.EventLog.SourceExists("MySource"))
{
System.Diagnostics.EventLog.CreateEventSource(
"MySource", "MyNewLog");
}
eventLog1.Source = "MySource";
eventLog1.Log = "MyNewLog";
Timer checkForTime = new Timer(5000);
checkForTime.Elapsed += new ElapsedEventHandler(checkForTime_Elapsed);
checkForTime.Enabled = true;
}
protected override void OnStart(string[] args)
{
eventLog1.WriteEntry("In OnStart");
}
protected override void OnStop()
{
eventLog1.WriteEntry("In onStop.");
}
void checkForTime_Elapsed(object sender, ElapsedEventArgs e)
{
string Time = "15:05:00";
DateTime dateTime = DateTime.ParseExact(Time, "HH:mm:ss",
CultureInfo.InvariantCulture);
if (DateTime.Now == dateTime) ;
eventLog1.WriteEntry(Time);
}
}
Aquí está mi código de método principal
static void Main()
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new AutoSMS()
};
ServiceBase.Run(ServicesToRun);
}
También probé los siguientes pasos:
- Vaya a Inicio> Ejecutar> y escriba regedit
- Navegue a: HKEY_LOCAL_MACHINE / SYSTEM / CurrentControlSet / Control
- Con la carpeta de control seleccionada, haga clic con el botón derecho en el panel de la derecha y seleccione un nuevo valor DWORD
- Nombre el nuevo DWORD: ServicesPipeTimeout
- Haga clic con el botón derecho en ServicesPipeTimeout, y luego haga clic en Modificar
- Haga clic en Decimal, escriba ''180000'', y luego haga clic en Aceptar
- Reinicia la computadora
Solía instalarlo y desinstalarlo con el siguiente comando:
installutil AutoSMS.exe
installutil /u AutoSMS.exe
Acabo de probar este código localmente en .Net 4.5 y el servicio se inicia y se detiene correctamente para mí. Sospecho que su problema puede estar alrededor de la creación de la fuente EventLog.
El método:
EventLog.SourceExists("MySource")
requiere que el usuario que ejecuta el código debe ser un administrador, según la documentación aquí:
http://msdn.microsoft.com/en-us/library/x7y6sy21(v=vs.110).aspx
Verifique que el servicio se esté ejecutando como un usuario que tenga privilegios de administrador.
Como han señalado otros, este error puede tener una multitud de causas. Pero con la esperanza de que esto ayude a alguien, compartiré lo que sucedió en nuestro caso. Para nosotros, nuestro servicio se había actualizado a .NET 4.5, pero el servidor no tenía .NET 4.5 instalado.
Compruebe ConnectionStrings
si está utilizando EntityFramework
o cualquier otro medio para iniciar las conexiones de la base de datos al inicio del servicio.
En mi caso, cuando recibí el error Error 1053 the service did not respond to the start or control request in a timely fashion
esto es lo que estaba pasando mal:
Estaba usando EntityFramework y tenía las cadenas de conexión incorrectas. Así que, básicamente, al inicio, EntityFramework no se pudo conectar a la base de datos utilizando la cadena de conexión incorrecta y el tiempo de espera agotado.
Simplemente tuve que reemplazar la cadena de conexión de la base de datos con la correcta y funcionó bien.
No necesitaba ninguna actualización de marco ni ningún otro cambio en el sistema / configuración.
Compruebe si el código de inicio del servicio es correcto,
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new WinsowsServiceToRun()
};
ServiceBase.Run(ServicesToRun);
Además, elimine los códigos de depuración. es decir,
#If Debug
...
...
...
#else
...
...
#endif
Construyendo el Servicio
Para construir su proyecto de servicio en Solution Explorer, abra el menú contextual para su proyecto y luego elija Propiedades. Aparecen las páginas de propiedades para su proyecto. En la pestaña Aplicación, en la lista de objetos de Inicio, seleccione MyService.Program.
Después de pasar algún tiempo sobre el tema, probando soluciones que no funcionaron, me encontré con este blog . Sugiere ajustar el código de inicialización del servicio en un bloque try / catch, como este, y agregar EventLog
using System;
using System.Diagnostics;
using System.ServiceProcess;
namespace WindowsService
{
static class Program
{
static void Main()
{
try
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new Service1()
};
ServiceBase.Run(ServicesToRun);
}
catch (Exception ex)
{
EventLog.WriteEntry("Application", ex.ToString(), EventLogEntryType.Error);
}
}
}
}
Luego, desinstale el servicio antiguo, vuelva a desplegar el servicio con estas modificaciones. Establezca el servicio y revise los registros del Visor de eventos / Aplicación. Verá cuál es el problema real, cuál es la razón subyacente del tiempo de espera.
Después de pasar demasiado tiempo en este tema. Encontré que EventLog
causaba todo ese lío aunque lo usé correctamente.
Quien aborde este problema, le sugiero que se deshaga de EventLog
. Use mejores herramientas como " log4net ".
En mi caso, aparentemente tenía algunos símbolos adicionales en mi archivo App.config que no noté al construir mi solución. Por lo tanto, recomiendo comprobar el archivo de configuración en busca de errores antes de seguir los pasos para cambiar las claves de registro, cambiar los modos de configuración, etc.
En mi caso, el problema era sobre la configuración de almacenamiento en caché, que está configurada en el archivo App.config. Una vez que eliminé las líneas siguientes del archivo App.config, se resolvió el problema.
<cachingConfiguration defaultCacheManager="MyCacheManager">
<cacheManagers>
<add name="MyCacheManager" type="Microsoft.Practices.EnterpriseLibrary.Caching.CacheManager, Microsoft.Practices.EnterpriseLibrary.Caching, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
expirationPollFrequencyInSeconds="60"
maximumElementsInCacheBeforeScavenging="50000"
numberToRemoveWhenScavenging="1000"
backingStoreName="NullBackingStore" />
</cacheManagers>
<backingStores>
<add type="Microsoft.Practices.EnterpriseLibrary.Caching.BackingStoreImplementations.NullBackingStore, Microsoft.Practices.EnterpriseLibrary.Caching, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
name="NullBackingStore" />
</backingStores>
En mi caso, estaba publicando el servicio mientras estaba en modo de depuración.
La solución fue:
- Cambiar la solución al modo de lanzamiento
- Desinstalar el servicio anterior con el comando
InstallUtil -u WindowsServiceName.exe
- instalando nuevamente el servicio
InstallUtil -i WindowsServiceName.exe
Funcionó perfectamente después.
En mi experiencia, tuve que detener mi servicio existente para actualizar el código. después de actualizar el código y al INICIAR el servicio recibí el mismo error "Error 1053, el servicio no respondió a la solicitud de inicio o control de manera oportuna".
Pero esto se resolvió después de reiniciar la máquina.
Es a causa del control de servicio de Microsoft Windows, que a veces controla el estado de los servicios. Si el servicio no envía una respuesta en 30 segundos, entonces tendrá este error.
Puede modificar el registro para que el servicio tenga más tiempo para responder
Go to Start > Run > and type regedit
Navigate to: HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control
With the control folder selected, right click in the pane on the right and select new DWORD Value
Name the new DWORD: ServicesPipeTimeout
Right-click ServicesPipeTimeout, and then click Modify
Click Decimal, type ''180000'', and then click OK
Restart the computer
O asegúrate de que en ese momento no haya otro proceso para hablar con el servicio, tal vez haya un conflicto que no conozco
Esto funcionó para mí. Básicamente, asegúrese de que el usuario de inicio de sesión esté configurado correctamente. Sin embargo, depende de cómo esté configurada la infraestructura de la cuenta. En mi ejemplo, usa credenciales de usuario de la cuenta AD.
En el cuadro de búsqueda del menú de inicio, busque ''Servicios''. En Servicios, encuentre el servicio requerido, haga clic en y seleccione la pestaña Iniciar sesión. Seleccione ''Esta cuenta'' e ingrese el contenido / credenciales necesarios. Escúchela e inicie el servicio como siempre.
Esto generalmente es causado por una excepción no detectada en el servicio en sí. (Errores del archivo de configuración, por ejemplo). Abrir un símbolo del sistema e iniciar el ejecutable de servicio de forma manual quizás revele la excepción lanzada.
He eliminado
EventLog.Exists
y arreglado.
He instalado .Net 4.6 en mi computadora WindowsServer y el error fue corregido.
Tu control debería ser de esta manera:
- Compruebe la versión .net de su WindowsService
- Luego, consulte la versión .net de su computadora
- Coincide con esa versión, ya que probablemente no coincida
Me encontré con el mismo problema y no estaba seguro de cómo resolverlo. Sí, esto ocurre porque se está lanzando una excepción desde el servicio, pero hay algunas pautas generales que puede seguir para corregir esto:
- Compruebe que ha escrito el código correcto para iniciar el servicio:
ServiceBase[] ServicesToRun; ServicesToRun = new ServiceBase[] { new WinsowsServiceToRun() }; ServiceBase.Run(ServicesToRun);
ServiceBase[] ServicesToRun; ServicesToRun = new ServiceBase[] { new WinsowsServiceToRun() }; ServiceBase.Run(ServicesToRun);
Debes asegurarte de que hay algún tipo de bucle infinito ejecutándose en la clase WinsowsServiceToRun
Finalmente, puede haber algún código que no esté registrando nada y cerrando el programa abruptamente (que fue el caso conmigo), en este caso, tendrá que seguir la vieja escuela de depuración que necesitaba escribir una línea a una fuente (texto / db / donde sea) Lo que enfrenté fue que como la cuenta que ejecutaba el servicio no era "Administrador", el código simplemente se caía y no registraba ninguna excepción en caso de que intentara escribir en "Registro de eventos de Windows" aunque el código estaba allí para registrar excepciones. . El privilegio de administrador en realidad no es necesario para iniciar sesión en Even Log pero es necesario para definir el origen. En caso de que el origen del evento no esté ya definido en el sistema y el servicio intente iniciar sesión por primera vez sin privilegios de administrador, falla. Para resolver esto, siga los pasos a continuación:
- Abrir símbolo del sistema con privilegio de administrador
- Pegue el comando:
eventcreate /ID 1 /L APPLICATION /T INFORMATION /SO <<Source>> /D "<<SourceUsingWhichToWrite>>"
- Presione enter
- Ahora comienza el servicio
Obtuve exactamente el mismo problema. Todo lo que hice fue cambiar el modo de depuración a Release mientras compilaba el dll. Esto ha resuelto mi problema, ¿cómo / por qué? No sé, ya hice una question sobre SO
Sé que esta es una pregunta antigua, solía escribir mi propio servicio de Windows VB.NET, y no tiene ningún problema para comenzar con MS Windows 7 y MS Windows 10.
Tengo este problema cuando instalo los servicios de Windows en el último parche de MS Windows 10. La razón por la que el servicio de Windows no la ejecuta es porque la versión .NET que necesitaba para ejecutar los servicios de ventana no se presenta en la PC instalada.
Después de haber instalado los servicios de Windows. vaya a la carpeta de instalación, por ejemplo, C: / Archivos de programa (x86) / Service1 / Service1.exe y haga doble clic para ejecutarlo. Si falta el paquete .NET framework, pedirá al usuario que lo descargue. Solo descarga y espera a que se instale.
Después de eso, reinicie los servicios de Windows en services.msc. Espero que esta respuesta ayude a alguien que enfrenta el problema. Sé que el problema está causado por la versión de .NET framework.
Tenía dos servicios en ejecución que estaban accidentalmente acoplados al mismo EventSource eventLog.Source = "MySource";
Después de desinstalar ambos servicios y reinstalar el que sufrió el error 1053, mi servicio comenzó normalmente.
Tuve el mismo problema Deshabilitar la opción "Cantar el manifiesto de ClickOnce", "Firmar el ensamblado" y "Activar la configuración de seguridad de ClickOnce" en las propiedades del proyecto ayudaron
Una de las posibles soluciones para este problema [Solucionó el problema en mi extremo y mi aplicación es una aplicación basada en JAVA ]:
1) compruebe que su aplicación apunta a la versión correcta de Java (compruebe la versión de Java y la ruta en su aplicación).
O
2) compruebe la versión Java configurada, es decir, compruebe si se trata de una versión de 32 bits o una versión de 64 bits (en función de su aplicación). si está usando 32 bits, entonces debería usar la versión JSL de 32 bits, de lo contrario, JSL causará este problema.
una posible razón es:
falta de coincidencia del servicio de Windows. versión de .net y su sistema versión .net.