it-swarm-pt.tech

Alguns Serviços param automaticamente se não estiverem sendo usados ​​por outros serviços

Erro "ALGUNS SERVIÇOS PARAM AUTOMATICAMENTE SE NÃO FOREM EM USO POR OUTROS SERVIÇOS" ao tentar iniciar um serviço do Windows. 

Eu tenho um serviço que não usa o arquivo de configuração de serviço do windows e usa propriedades estáticas - funciona bem

Agora, faço uso do arquivo app.config e reconstruo meu projeto de instalação + o projeto de serviço. Agora eu instalar o serviço e tente iniciar o serviço - eu recebo o seguinte erro:

ALGUNS SERVIÇOS PARAM AUTOMATICAMENTE SE NÃO FOREM USADOS POR OUTROS SERVIÇOS

O serviço efetua logon como sistema local.

Qualquer entrada é bem vinda por favor! Obrigado. 

17
paras_doshi

Este é geralmente o resultado de uma das duas coisas - ou (a) seu método OnStart() está lançando uma exceção ou (b) o método OnStart() não está iniciando um thread para fazer o trabalho.

Se o problema for (a), a solução óbvia é depurar o serviço para identificar o que está errado. No mínimo, coloque um bloco try-catch em torno do conteúdo do método OnStart() e registre um erro no log de eventos do sistema quando ocorrer uma exceção. Então você pode ver os detalhes no Visualizador de Eventos do Windows.

Se o problema é (b), então você precisa criar um thread que realmente faça alguma coisa. O encadeamento precisa ser um encadeamento de primeiro plano (em oposição a um encadeamento em segundo plano) para evitar que o serviço seja encerrado. Um método típico OnStart() se parece com isto:

private System.Threading.Thread _thread;

protected override void OnStart(string[] args)
{
    try
    {
        // Uncomment this line to debug...
        //System.Diagnostics.Debugger.Break();

        // Create the thread object that will do the service's work.
        _thread = new System.Threading.Thread(DoWork);

        // Start the thread.
        _thread.Start();

        // Log an event to indicate successful start.
        EventLog.WriteEntry("Successful start.", EventLogEntryType.Information);
    }
    catch (Exception ex)
    {
        // Log the exception.
        EventLog.WriteEntry(ex.Message, EventLogEntryType.Error);
    }
}

private void DoWork()
{
    // Do the service work here...
}
35
Matt Davis

Eu recebi este erro e foi porque o disco rígido estava cheio. Pode ser qualquer coisa que impeça a execução do serviço.

3
BBoyd

Eu tive o mesmo erro que foi devido a dll não está sendo criado quando executar o installUtil.cmd no meu serviceInstaller.msi. Para corrigir isso eu tive que incluir um desses => <File Id="Interception" Source="$(var.SourceDir)\Microsoft.Practices.Unity.Interception.dll" /> para cada dll que eu estava esperando no meu projeto e colocá-lo no meu arquivo Service.wxs. Assim => <Fragment><DirectoryRef Id="ApplicationDirectory"><Component Id="ServiceID" Guid="$(var.ServiceGuid)"> *here* <closing tags...>. E certifique-se de que todas as dll's estão incluídas nos comandos installers x copy :) 

Espero que isto ajude!

0
CRoberts