w3svc stop start sirve servicios servicio que para net forzar detener deshabilitar desde windows-services servicecontroller

windows-services - start - net stop w3svc



Parece que ServiceController no puede detener un servicio (6)

Estoy intentando detener un servicio de Windows en una máquina local (el servicio es Topshelf.Host , si eso importa) con este código:

serviceController.Stop(); serviceController.WaitForStatus(ServiceControllerStatus.Stopped, timeout);

timeout se establece en 1 hora, pero el servicio nunca se detiene. Lo extraño con esto es que desde el complemento de MMC de Servicios, lo veo en estado "Parando" primero, pero después de un tiempo vuelve a "Comenzado". Sin embargo, cuando intento detenerlo manualmente, se produce un error:

Windows could not stop the Topshelf.Host service on Local Computer. Error 1061: The service cannot accept control messages at this time.

¿Me estoy perdiendo de algo?


Me enfrenté a un problema similar. Este error ocurre a veces porque el servicio ya no puede aceptar mensajes de control, esto puede deberse a problemas de espacio en el disco en el servidor donde está presente el archivo de registro de ese servicio en particular. Si esto ocurre, también puede considerar la siguiente opción. 1. Vaya a la ubicación donde se encuentra el archivo exe y su archivo de registro. 2. Libere un poco de espacio 3. Elimine el proceso de los servicios a través del Administrador de tareas 4. Inicie el servicio.


Sé que llego bastante tarde para responder esto, pero tuve un problema similar, es decir, el error: "El servicio no puede aceptar mensajes de control en este momento". y me gustaría agregar esto como una referencia para otros.

Puedes intentar matar este servicio usando powershell (ejecuta powershell como administrador):

#Get the PID of the required service with the help of the service name, say, service name. $ServicePID = (get-wmiobject win32_service | where { $_.name -eq ''service name''}).processID #Now with this PID, you can kill the service taskkill /f /pid $ServicePID


Solo luché contra este problema mientras movía el código de una caja de varias particiones antigua a una caja de particiones única más nueva. En la parada de servicio, estaba escribiendo a D: y como ya no existía, recibí un error 1061. Sin embargo, cualquier operación prolongada durante el OnStop causará esto a menos que termine la llamada a otro hilo con un delegado de devolución de llamada.


Su servicio está ocupado procesando una gran operación o está en transición para cambiar el estado. por lo tanto, no puede aceptar más información ... solo piense que toma más de lo que puede masticar ...

Si está seguro de que no le ha suministrado nada importante, solo vaya al administrador de tareas y finalice el proceso para este servicio o reinicie su máquina.


También he visto este problema, específicamente cuando un servicio está pendiente de inicio y lo envié a una parada programáticamente que tiene éxito pero no hace nada. También a veces veo que los comandos de detención de un servicio en ejecución fallan con esta misma excepción, pero aún así, en realidad, detengo el servicio. No creo que se pueda confiar en la API para hacer lo que dice. Esta explicación del mensaje de error es bastante útil ...

http://technet.microsoft.com/en-us/library/cc962384.aspx


Tuve exactamente el mismo problema con el servicio alojado Topshelf. La causa fue un largo tiempo de inicio del servicio, más de 20 segundos. Esto dejó el servicio en el estado en el que no pudo procesar más solicitudes. Pude reproducir el problema solo cuando el servicio se inició desde la línea de comandos (net start my_service).

La inicialización adecuada para el servicio Topshelf con un largo tiempo en estrella es la siguiente:

namespace Example.My.Service { using System; using System.Threading.Tasks; using Topshelf; internal class Program { public static void Main() { HostFactory.Run( x => { x.Service<MyService>( s => { MyService testServerService = null; s.ConstructUsing(name => testServerService = new MyService()); s.WhenStarted(service => service.Start()); s.WhenStopped(service => service.Stop()); s.AfterStartingService( context => { if (testServerService == null) { throw new InvalidOperationException("Service not created yet."); } testServerService.AfterStart(context); }); }); x.SetServiceName("my_service"); }); } } public sealed class MyService { private Task starting; public void Start() { this.starting = Task.Run(() => InitializeService()); } private void InitializeService() { // TODO: Provide service initialization code. } [CLSCompliant(false)] public void AfterStart(HostControl hostStartedContext) { if (hostStartedContext == null) { throw new ArgumentNullException(nameof(hostStartedContext)); } if (this.starting == null) { throw new InvalidOperationException("Service start was not initiated."); } while (!this.starting.Wait(TimeSpan.FromSeconds(7))) { hostStartedContext.RequestAdditionalTime(TimeSpan.FromSeconds(10)); } } public void Stop() { // TODO: Provide service shutdown code. } } }