2009-12-08 10 views
0

J'ai un service Windows dont j'ai hérité d'un développeur défaillant. Le service Windows fonctionne correctement dans l'environnement de contrôle qualité. Lorsque j'installe le service et l'exécute localement, je reçois cette erreur:Le service Windows démarre puis s'arrête

Le service ne peut pas être démarré. System.InvalidOperationException: le compteur de performances demandé n'est pas un compteur personnalisé, il doit être initialisé en tant que ReadOnly.

Voici le code:

ExternalDataExchangeService exchangeService = new ExternalDataExchangeService(); 
      workflowRuntime.AddService(exchangeService); 
      workflowRuntime.AddService(new SqlTrackingService(AppContext.SqlConnectionImportLog)); 
      ChallengerWorkflowService challengerWorkflowService = new ChallengerWorkflowService(); 
      challengerWorkflowService.SendDataEvent += new EventHandler<SendDataEventArgs>(challengerWorkflowService_SendDataEvent); 
      workflowRuntime.AddService(challengerWorkflowService); 
      workflowRuntime.StartRuntime(); <---- Exception is thrown here. 

Répondre

1

Vérifiez le code d'installation. Souvent, vous trouverez des compteurs créés au sein d'une installation (qui sera exécutée sous les droits d'administrateur sur le site client) et le code les utilise comme s'ils existaient - mais n'essaiera pas de les créer car ils ne prévoient pas avoir le autorisations

Si vous venez d'obtenir la source, puis que vous essayez de l'exécuter, les classes compteurs/compteurs n'existent pas et vous tombez immédiatement. (Vous pouvez aussi vérifier si le compteur existe ou si vous avez un administrateur local si vous avez écrit le code pour le créer dans le service.)

Vu précédemment.

+0

Vous pouvez augmenter les privilèges de l'utilisateur du processus de service pour voir si cela résout le problème. –

+0

Je ne trouve aucun compteur dans l'application ou l'installateur. Je suis connecté en tant qu'administrateur sur mon PC. –

+0

Aller à devoir trouver à partir du code quel compteur attend et suivre s'il s'agit d'un personnalisé créé par le développeur, ou un basé sur Windows qu'il s'attend à lire. (Cela peut être un compteur d'applications d'échange, et votre boîtier QA a un échange, mais votre PC de développement n'a pas d'échange installé.) – Andrew

0

Attacher le débogueur et rompre sur InvalidOperationException (première chance, c'est-à-dire lorsqu'il est levé)?

Questions connexes