Erro 1053 O serviço não respondeu atempadamente ao pedido de início ou controlo
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
installutil AutoSMS.exe
installutil /u AutoSMS.exe
30 answers
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
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.
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.
- 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:
- abrir a linha de comandos com privilégios de administrador
- colar o comando:
eventcreate /ID 1 /L APPLICATION /T INFORMATION /SO <<Source>> /D "<<SourceUsingWhichToWrite>>"
- pressione enter
- Agora começa o serviço
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.
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
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 ".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
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.
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 fashion
isto é 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.
Instalei o. Net 4.6 no meu computador WindowsServer e o erro foi corrigido.
O teu controlo deve ser por aqui:
- Verifique a versão. net do seu serviço de janelas
- então verifique a versão. net do seu computador
- Corresponde a essa versão, já que provavelmente não corresponde
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"
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
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.
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.
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);
}
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>
Eu removi
EventLog.Existe
E fixas.
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
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.
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>);
}
- > 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. 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)Instale o framework. net 4.5! Funcionou comigo.
Https://www.microsoft.com/en-us/download/details.aspx?id=57768