9
votes

Déterminer la raison pour laquelle un service Windows .NET ne démarre pas

J'essaie de déterminer pourquoi un service .NET que je peux installer avec succès sur un grand nombre de machines ne démarrera pas sur certaines machines.

Lorsque le service est démarré sur ces machines, le service s'arrête instantanément. Mes hypothèses sont donc que les utilisateurs ne disposent pas de privilèges suffisants pour installer le service ou qu'il existe un problème avec le service; Cependant, ces deux conditions sont fausses (les travaux de service et ils ont des privilèges suffisants).

Quelles sont les mesures que je devrais prendre pour déterminer la raison pour laquelle le service ne démarre pas?


2 commentaires

Comme il s'agit d'un service .NET, la bonne version de .NET est-elle installée?


Oui, vois ma réponse pour ma solution


3 Réponses :


7
votes

Le journal des événements d'application doit contenir des détails sur les exceptions .NET survenues lors du démarrage du service. Cela peut aider à diagnostiquer le problème.

Vous pouvez également ajouter un code de débogage (ou un code de trace) à votre démarrage de l'application et utiliser DebugView à partir de Sysinternals voir où il arrive à.


3 commentaires

Les messages de service sont stockés dans le journal du système.


+1: Vous pouvez également joindre un débogueur au service et passer à autre chose.


@Ben m: pendant que vous avez raison que les messages de service sont stockés dans le journal des événements, les exceptions .NET sont enregistrées sur le journal des applications.



4
votes

Alors je l'ai compris, merci de regarder le journal des événements de @matthew Steeeples et @ben m.

Le problème était que le service écrit sur le journal des événements commence lorsqu'il se connecte à un serveur; Cependant, ce journal des événements de machines était plein. Ainsi, lorsque le service a essayé d'écrire sur le journal des événements, il a échoué, ce qui lui entraîne une exception qui ne pouvait plus être écrite au journal d'événement complet.

SO CAS POINT, si vous écrivez au journal des événements, assurez-vous qu'il n'est pas complet ou que vous gérez l'exception!


3 commentaires

Bonjour msarchet, Stackoverflow suit un format QA par opposition à un format de forum. Si une réponse fournie était suffisante, il est préférable de le marquer comme accepté - l'affiche appréciera les points de réputation. De même, ajouter une réponse à votre propre question afin de poursuivre la conversation est découragée en faveur de la modification de la question initiale et de l'ajout de toute solution que vous avez trouvée seule.


J'ajouterais, c'est acceptable (pardon le jeu de mots) d'ajouter et d'accepter votre propre réponse uniquement s'il n'y a pas d'autre réponse qui vous a aidé avec eproblème.


En réalité, il s'agit d'une pratique acceptable, les réponses fournies n'étaient pas réellement correctes, oui, ils m'ont signalé vers la réponse, mais pas la réponse réelle. Meta Posts: meta.stackexchange.com/questions/14488/... meta.stackexchange.com/questions/2800/... meta.stackexchange.com/questions/12513/...



2
votes

regarder dans Viewer d'événement -> Logs Windows -> Application

Cela devrait montrer des exceptions non capturées. Dans mon cas, je m'attendais à ce que le répertoire actuel soit l'emplacement de l'EXE de service, mais il s'avère qu'il est en fait % windir% \ system32 donc j'ai besoin de modifier mon application pour obtenir la modification de mon application pour obtenir le Annuaire EXE et utilisez cela lors de l'accès à des fichiers.


0 commentaires