2009-12-08 2 views
0

У меня есть служба Windows, которую я унаследовал от ушедшего разработчика. Служба Windows отлично работает в среде QA. Когда я устанавливаю службу и запускаю ее локально, я получаю эту ошибку:Служба Windows запускается затем Остановки

Обслуживание не может быть запущено. System.InvalidOperationException: запрошенный счетчик производительности не является настраиваемым счетчиком, его нужно инициализировать как ReadOnly.

Вот код:

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. 

ответ

1

Проверка для инсталлятора кода. Часто вы обнаружите, что счетчики создаются в рамках установки (которая собирается запускаться под админы администратора на клиентском сайте), и код затем использует их, как если бы они существовали, но не будет пытаться их создать, потому что они не ожидают, что разрешения.

Если вы только что получили источник, а затем попробуйте запустить его, классы счетчиков/счетчиков не существуют, поэтому вы сразу же упадете. (В качестве альтернативы проверьте, существует ли счетчик/у вас есть местный администратор, если они написали код для его создания в службе.)

Видел перед тем, как это упомянуто.

+0

Возможно, вы захотите увеличить привилегии пользователя процесса обслуживания, чтобы узнать, устраняет ли это проблему. –

+0

Я не могу найти счетчики в приложении или установщике. Я зарегистрировался как Admin на своем ПК. –

+0

Нужно найти из кода, который он ожидает, и отслеживать, является ли это пользовательский, созданный разработчиком, или Windows, на основе которого он будет читать. (Можно сказать, что это счетчик приложений обмена, и ваш ящик QA имеет обмен, но на вашем компьютере разработки нет установленного обмена.) – Andrew

0

Отключить отладчик и отключить InvalidOperationException (первый шанс, то есть когда он был выброшен)?

Смежные вопросы