Pergunta

Eu tenho um serviço do Windows que executa várias operações de monitoramento do sistema.No entanto, ao executar verificações relacionadas ao SNMP, sempre recebo uma exceção NullReference.O código funciona bem quando executado pela interface do usuário (com meu nome de usuário e senha), mas sempre apresenta erros ao executar o serviço.Tentei executar o serviço com contas de usuário diferentes (incluindo a minha), sem sorte.Tentei substituir o código de monitoramento SNMP pela chamada do cmdlet get-snmp do PowerShell (do /n NetCmdlets), mas isso gerou o mesmo erro.

O aplicativo com o qual estou trabalhando é PolyMon.

Alguma ideia?

Foi útil?

Solução

Algumas maneiras de depurar:

  • Existe alguma informação adicional no log de eventos do Windows?
  • Acredito que você deveria ser capaz de ouvir algum tipo de evento de exceção global como Application_Exception nos serviços do Windows.Não consigo lembrar o nome exato, mas você pode pelo menos despejar o rastreamento de pilha a partir daí.
  • Você poderá começar a depurar o projeto no modo de serviço.

Alguns trechos de código/rastreamento de pilha/informações certamente ajudarão.

Outras dicas

Você pode anexar um depurador ao processo em execução antes de acionar a exceção.Isso deve lhe dar uma ideia melhor do que está acontecendo com o aplicativo.

Algumas coisas que vimos - mais sobre as diferenças entre serviços interativos e serviços, mas podem ajudar...

Uma coisa que vimos que não parece relevante é a diferença entre o que está no caminho do usuário e do sistema.

Outra coisa que vimos está relacionada a arquivos temporários - o serviço que tínhamos era criar muitos no diretório windows emp - rastreamos isso quando ele criou algo em torno de 65.000 desses arquivos e, portanto, atingiu o limite do que um diretório pode conter ...

Atenciosamente, Chris

Já abordei esse tipo de problema antes, se você ainda não encontrou a resposta, sugiro o seguinte:

  • Habilite o rastreamento/registro em todos os aplicativos e bibliotecas de terceiros que você está usando, de forma que os erros sejam registrados em arquivos em vez de stdout ou stderr.Muitas vezes, você encontrará uma pista nisso.
  • Seu serviço do Windows pode depender de alguma configuração de rede do Windows para estar instalada antes da inicialização.Isto pode ser devido ao ambiente (PATH, como outros sugeriram) ou devido a 'dependências' de outros serviços.

Jay.........

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top