2017-05-29 1 views
0

J'ai un service Windows programmé dans vb.NET, en utilisant Topshelf en tant qu'hôte de service. De temps en temps, le service ne démarre pas. Dans le journal des événements, le SCM écrit les erreurs 7000 et 7009 (le service n'a pas répondu dans les délais). Je sais que c'est un problème commun, mais je (pense) que j'ai tout essayé sans résultat. Le service repose uniquement sur WMI et ne nécessite aucune opération fastidieuse. J'ai lu cette question (Error 1053: the service did not respond to the start or control request in a timely fashion), mais aucune des réponses n'a fonctionné pour moi.Windows Service expire Erreur 7000 7009

I Tried:

  • Set de délai d'attente de démarrage de topshelf.
  • Demander un délai supplémentaire dans la première ligne de la méthode "OnStart".
  • Définissez une minuterie périodique qui demande un délai supplémentaire au SCM.
  • Supprimer TopShelf et rendre le service avec le modèle de service Visual Studio.
  • Déplacez le code d'initialisation et le code "OnStart" vers un nouveau thread pour revenir immédiatement.
  • Construit en mode RELEASE.
  • Définissez GeneratePublisherEvidence = false dans le fichier app.config (par application).
  • Non cochée "Vérifier la révocation du certificat de l'éditeur" dans les paramètres Internet (par machine).
  • Suppression de tous les flux alternatifs (dans le cas où une DLL était marquée comme web et bloquée).
  • Suppression de tout "code de débogage"
  • Augmentation du délai d'expiration du service général de Windows à 120000ms.

aussi:

  • Le service ne cherche pas à communiquer avec le bureau de quelque façon que de l'utilisateur.
  • L'UAC est désactivé.
  • Le service s'exécute sur le compte système local.

Je crois que le code du service lui-même est pas le problème parce que:

  • Il a été mis sur la production depuis plus de deux ans.
  • Habituellement, le service démarre correctement.
  • Aucune exception n'est consignée dans le journal des événements.
  • Les options "Sur erreur" pour le service ne sont pas appelées (puisque le service n'échoue pas réellement, ne répond tout simplement pas au SCM)
  • J'ai presque tout commenté, poursuivant cette erreur! ;-)

Toute aide est la bienvenue puisque je suis tout à fait d'idées, et j'ai strugling ce depuis plus de 15 jours ...

Répondre

0

j'ai eu ce qui se passe à un début de service après La mise à jour Windows Creator's Edition est installée. Fondamentalement, cela a ralenti tout l'ordinateur, ce qui a déclenché le problème. Même un des services Windows avait un problème de délai d'expiration.Ce que j'ai appris en ligne est que le constructeur du service doit être rapide, mais OnStart a plus de marge de manœuvre avec le SCM. Mon service avait un wrapper C# et il comprenait un InitializeComponent() qui a été appelé dans le constructeur. J'ai transféré cet appel à OnStart et le problème a disparu.

+0

Oups, désolé. Après des tests plus approfondis, j'ai trouvé que le déplacement de l'initialisation vers OnStart provoque d'autres problèmes. Il devrait rester dans le constructeur. –

+0

Veuillez supprimer votre réponse si vous pensez que c'est faux, plutôt que de laisser un commentaire. – Alex