Erro 1053 O serviço não respondeu atempadamente ao pedido de início ou controlo

Eu criei e instalei um serviço algumas vezes. Inicialmente estava funcionando bem, mas depois de algumas alterações no código de serviço ele começa a dar o erro quando eu reiniciar o serviço em serviços.msc:

Erro 1053: O serviço não respondeu atempadamente ao pedido de início ou controlo

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);
    }
}

Aqui está o meu código principal do método

static void Main()
{
    ServiceBase[] ServicesToRun;
    ServicesToRun = new ServiceBase[] 
    { 
        new AutoSMS() 
    };
    ServiceBase.Run(ServicesToRun);
}

também tentei os seguintes passos:

  • vá para Start > Run > E type regedit
  • navegar para: HKEY_LOCAL_ Machine\SYSTEM\CurrentControlSet\Control
  • com a pasta de controlo seleccionada, carregue com o botão direito na área à direita e-seleccione o novo valor de DWORD
  • Nomeie a nova palavra: ServicesPipeTimeout
  • carregue com o botão direito no ServicesPipeTimeout, e depois carregue em Modificar
  • Click Decimal, type '180000', and then click OK
  • reinicie o computador
Eu costumava instalar e desinstalar com seguinte comando:

installutil AutoSMS.exe

installutil /u AutoSMS.exe
Author: one noa, 2014-06-15

30 answers

No meu caso, estava a publicar o serviço enquanto estava no modo de depuração.

A solução foi:

  • mudar a solução para Modo de libertação
  • desinstalar o serviço antigo com o comando {[[0]}
  • instalar novamente o serviço InstallUtil -i WindowsServiceName.exe
Funcionou perfeitamente depois.
 32
Author: Pranav Singh, 2016-08-05 09:41:42

Como outros salientaram, este erro pode ter uma infinidade de causas. Mas na esperança de que isto ajude alguém, vou partilhar o que aconteceu no nosso caso. Para nós, nosso serviço tinha sido atualizado para .net 4.5, mas o servidor não tinha.net 4.5 instalado.

 28
Author: JamesQMurphy, 2015-06-11 21:46:36

Depois de passar algum tempo sobre o assunto, tentando soluções que não funcionavam, encontrei este blog. Sugere que se embrulhe o código de inicialização do serviço num bloco de tentativa / captura, como este, e adicione o 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);
            }
        }
    }
}
Então, desinstale o serviço antigo, reposicione o serviço com estas modificações. Iniciar o serviço e verificar os registos do Visualizador de eventos/Aplicação. Você vai ver qual é o verdadeiro problema, que é a razão subjacente para o tempo-limite.
 22
Author: JS5, 2018-12-15 04:22:06
Encontrei o mesmo problema e não sabia como resolvê-lo. Sim, isso ocorre porque uma exceção está sendo lançada do serviço, mas há algumas diretrizes gerais que você pode seguir para corrigir isso:
  • Verifique se escreveu o código correcto para iniciar o serviço: ServiceBase[] ServicesToRun; ServicesToRun = new ServiceBase[] { new WinsowsServiceToRun() }; ServiceBase.Run(ServicesToRun);
  • Você precisa garantir que há algum tipo de laço infinito correndo na classe WinsowsServiceToRun

  • Finalmente, pode haver algum código que não está registrando nada e fechando o programa abruptamente (o que foi o caso comigo), neste caso você terá que seguir A velha escola de depuração que precisava escrever uma linha para uma fonte (texto/db/onde quer que). O que eu enfrentei foi que, uma vez que a conta executando o serviço não era "Admin", o código estava apenas caindo e não registrando quaisquer exceções no caso de ele estava tentando escrever para o "Windows Event Log", mesmo que o código estava lá para registrar exceções. Privilégio administrativo não é realmente necessário para logar até mesmo logar, mas é necessário para definir a fonte. No caso de a fonte do evento ainda não estar definida no sistema e o serviço tentar logá-lo pela primeira vez sem privilégio de administração, ele falha. Para resolver isto, siga os seguintes passos:
    1. abrir a linha de comandos com privilégios de administrador
    2. colar o comando: eventcreate /ID 1 /L APPLICATION /T INFORMATION /SO <<Source>> /D "<<SourceUsingWhichToWrite>>"
    3. pressione enter
    4. Agora começa o serviço
 11
Author: Akash Sahay, 2015-07-06 10:36:43

Acabei de tentar este código localmente em. Net 4.5 e o serviço começa e pára correctamente para mim. Suspeito que o seu problema esteja em criar a fonte do EventLog.

O método:

EventLog.SourceExists("MySource")

Requer que o utilizador que executa o código seja um administrador, de acordo com a documentação aqui:

Http://msdn.microsoft.com/en-us/library/x7y6sy21(v=vs 110).aspx

Verifique se o serviço está a correr como um utilizador que tem privilégios de administrador.

 10
Author: devduder, 2014-06-15 10:18:40
É por causa do controle do serviço Microsoft Windows, ele controla às vezes o estado dos serviços. Se o serviço não enviar uma resposta em 30 segundos, então você terá este erro.

Pode alterar o registo, para que o serviço tenha mais tempo 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
Ou certifique-se que nesse momento não há outro processo falando com o serviço, talvez haja um conflito que eu não conheço
 6
Author: Alberto Perez, 2014-09-17 13:19:02

Depois de passar demasiado tempo nesta questão. Encontrei a causa de toda aquela confusão, embora a tenha usado correctamente.

Seja quem for que trate deste assunto, sugiro que se livre do ... Use ferramentas melhores como " log4net ".
 5
Author: Jacob, 2017-05-30 00:11:24

Eu estava recebendo exatamente o mesmo problema, tudo que eu fiz foi mudar o modo de depuração para liberar ao compilar o dll. Isto resolveu o meu problema, como e porquê? Eu não sei eu já fiz uma pergunta sobre SO

 4
Author: ahsant, 2017-05-23 12:18:17

Além disso, tem de verificar o conteúdo do seu ficheiro de configuração.

Tem de verificar por baixo da secção.

<startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2"/>
</startup>

Porque a secção acima precisa de corresponder à sua estrutura.net.

 4
Author: NoughT, 2019-02-28 02:28:40
No caso que encontrei esta manhã, o culpado era um ficheiro de configuração malformado. O ficheiro de configuração tinha uma marca de comentários próxima sem a marca de comentários aberta. Então, verifique novamente seus arquivos de configuração para erros.
 4
Author: UnhandledExcepSean, 2019-05-22 14:10:09

Verifique ConnectionStrings se está a utilizar EntityFramework ou qualquer outro meio para iniciar as ligações de bases de dados no arranque do serviço.

No meu caso, quando recebi o erro Error 1053 the service did not respond to the start or control request in a timely fashionisto é o que estava a correr mal:

Eu estava a usar o quadro de direitos e tinha as cordas de ligação erradas. Então, basicamente no arranque, o EntityFramework não conseguiu ligar-se à base de dados usando o texto de ligação incorrecto e cronometrado.

Apenas tive que substituir o texto de ligação da base de dados com o correcto e funcionou bem.

Não precisava de qualquer actualização do framework ou qualquer outra alteração de Sistema/Configuração.

 2
Author: AndroidMechanic - Viral Patel, 2016-01-08 10:18:44

Instalei o. Net 4.6 no meu computador WindowsServer e o erro foi corrigido.

O teu controlo deve ser por aqui:

  1. Verifique a versão. net do seu serviço de janelas
  2. então verifique a versão. net do seu computador
  3. Corresponde a essa versão, já que provavelmente não corresponde
 2
Author: Metin Atalay, 2018-03-07 12:32:52

Se quiser registar um executável.net core 3.1 como um serviço Windows, certifique-se que adicionou o pacote NuGet Microsoft.Extensao.Hospedagem.WindowsServices na versão 3.1.7 ou acima e inicializar o construtor de máquinas como no seguinte exemplo:

using Microsoft.Extensions.Hosting;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] arguments)
        {
            IHostBuilder hostBuilder = Host.CreateDefaultBuilder(arguments);
            hostBuilder.UseWindowsService();
            hostBuilder.Build().Run();
        }
    }
}

Agora você é capaz de instalar o executável e iniciá-lo como um serviço do windows:

sc.exe create ConsoleApp1 binPath= "<BIN_PATH>\ConsoleApp1.exe"
 2
Author: Hardy Hobeck, 2020-09-05 12:23:34
Isto funcionou comigo. Basicamente certifique-se de que o Log on user está configurado para o direito. No entanto, depende da forma como a infra-estrutura de conta é definida. No meu exemplo está usando credenciais de usuário de conta AD.

No Menu Iniciar procura por 'serviços' - Nos Serviços encontrar o serviço necessário - carregue com o botão direito e seleccione a Página de Registo - Selecione 'esta conta' e digite o conteúdo/credenciais necessárias - Ok, e iniciar o serviço como de costume

enter image description here

 1
Author: , 2016-03-23 10:27:11

Uma das soluções possíveis para este problema [ele fixou o problema no meu fim e a minha aplicação é JAVA aplicação baseada]:

1) Verifique se a sua aplicação está a apontar para a versão correcta do java(verifique a versão e a localização do java na sua aplicação).

Ou

2)Verifique a versão java configurada I. E. verifique se é uma versão de 32 bits ou de 64 bits (com base na sua aplicação). se você está usando 32-bit então você deve usar 32-bit versão JSL, else JSL vai causar este problema.

 1
Author: Suresh Reddy, 2016-06-17 11:09:58
Isto é normalmente causado por uma excepção inesperada no próprio serviço. (Erros do ficheiro de configuração, por exemplo). Abrir uma linha de comandos e iniciar manualmente o executável do serviço irá talvez revelar a excepção que foi lançada.
 1
Author: Robert Pouleijn, 2016-11-01 23:03:55
Pela minha experiência, tive de parar o meu serviço existente para actualizar o código. depois de atualizar o código e ao iniciar o serviço eu recebi o mesmo erro "Erro 1053 O serviço não respondeu ao pedido de início ou controle em tempo hábil". Mas isto foi resolvido depois de reiniciar a máquina.
 1
Author: KirtiSagar, 2018-03-16 18:14:09
Eu sei que esta é uma pergunta antiga., Eu costumava escrever o meu próprio VB.NET windows service, e não tem nenhum problema para começar no MS windows 7 e MS windows 10.

Tenho este problema quando instalo os Serviços windows no último patch do MS Windows 10. A razão pela qual o serviço windows não o executa é porque a versão.net necessária para os Serviços de janelas serem executados não é apresentada no PC instalado.

Depois de ter instalado os Serviços windows. ir para a pasta de instalação, por exemplo C:\Program files (x86)\Service1\Service1.exe e Double click para executá-lo. Se faltar o pacote de framework. net, ele irá pedir ao Usuário para baixá-lo. Basta baixar e esperar que ele instale.

Depois disso, reinicie os serviços do windows em serviços.mestrado. Espero que esta resposta ajude alguém a enfrentar o problema. Sei que o problema é causado pela versão do framework.net.

 1
Author: Seng Yee Lee, 2018-03-26 08:56:33
Riscei a cabeça para corrigir este erro. Este erro pode ser causado se você estiver debugando-o no código como
static void Main()
{
 #if DEBUG
            MailService service = new MailService();
             service.Ondebug();
 #else
             ServiceBase[] ServicesToRun;
             ServicesToRun = new ServiceBase[]
             {
                 new MailService()
             };
             ServiceBase.Run(ServicesToRun);
 #endif
         }
     }

Depois de limpar o if,else e endif no código como este o erro não apareceu novamente....espero que ajude....

static void Main()
{

    ServiceBase[] ServicesToRun;
    ServicesToRun = new ServiceBase[]
    {
        new MailService()
    };
    ServiceBase.Run(ServicesToRun);

}
 1
Author: keshava shourie.b, 2018-12-13 10:30:24

No meu caso, o problema era a configuração de cache que está definida na aplicação.ficheiro de configuração. Assim que removi as linhas abaixo da aplicação.ficheiro de configuração, o problema foi resolvido.

<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>

 0
Author: Burak Karakuş, 2015-04-06 12:13:41

Eu removi

EventLog.Existe

E fixas.

 0
Author: cacheoff, 2017-03-25 01:27:23
No meu caso, tinha símbolos extra na minha aplicação.ficheiro de configuração que eu não notei ao construir a minha solução. Então eu recomend para verificar o arquivo de configuração para erros primeiro antes de tomar medidas com a mudança de chaves de registro, mudar os modos de configuração, etc.
 0
Author: Anastasia, 2017-05-01 21:25:50
Eu tinha dois serviços a funcionar que foram acidentalmente acoplados à mesma fonte de Eventos depois de desinstalar ambos os serviços, e reinstalar o que sofreu o erro 1053, O meu serviço começou normalmente.
 0
Author: Kurt Van den Branden, 2017-11-23 09:38:33

Verifique se o código inicial do serviço está correcto,

ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[] 
{ 
    new WinsowsServiceToRun() 
};
ServiceBase.Run(ServicesToRun);

Também, remova os códigos de depuração. ie,

  #If Debug
         ...
         ...
         ...
        #else
         ...
         ...
        #endif
 0
Author: Amey P Naik, 2018-03-24 10:42:07
Tive o mesmo problema. Desligar a opção "Sing the ClickOnce manifest"," Sign the assembly "e" Enable ClickOnce security settings " nas propriedades do projecto ajudou
 0
Author: user3210023, 2018-07-20 14:32:19

O meu problema era o de appsettings.json não copiar para libertar a pasta de compilação durante a compilação e colocá-la na pasta ...\bin\Release e copiar o conteúdo launchSettings.json para appsettings.json resolveu o problema para mim.

 0
Author: EPS, 2018-09-18 15:43:56
Eu tinha o mesmo problema. Parece que ao iniciar o serviço o fio principal não deve ser o fio principal do trabalhador. Simplesmente criando um novo fio e entregando o trabalho principal a esse fio resolveu o meu problema.
 0
Author: pieter de villiers, 2018-12-09 10:19:09

Este erro pode ser causado por várias razões. para identificar a razão adicionar tentativa / captura quando o serviço é executado.

        try
            {
                ServiceBase[] ServicesToRun;
                ServicesToRun = new ServiceBase[] 
                { 
                    new Service1() 
                };
                <span class="skimlinks-unlinked">ServiceBase.Run(ServicesToRun</span>);
            }
            catch (Exception ex)
            {
                EventLog.WriteEntry("Application", ex.ToString(), <span class="skimlinks-unlinked">EventLogEntryType.Error</span>);
            }
 0
Author: DevT, 2019-02-07 14:56:35
Como ninguém mencionou, vou adicioná-lo (mesmo que seja um erro estúpido). No caso de estar no Windows 10, normalmente não precisa de reiniciar, mas

- > Certifique-se de fechar quaisquer páginas de propriedades abertas da janela de "serviços"no caso de ter acabado de instalar o serviço (e ainda ter aberto a página de propriedades do serviço antigo).

Estou a falar desta janela.

Services list

Depois de fechar todas as janelas dos serviços e voltar a tentar, funcionou. Em contrastando com o OP i got {[[0]} basicamente imediatamente (sem janelas à espera de nada)
 0
Author: matthid, 2020-01-16 18:03:30

Instale o framework. net 4.5! Funcionou comigo.

Https://www.microsoft.com/en-us/download/details.aspx?id=57768

 0
Author: Gayanga, 2020-03-11 09:19:17