Служба Windows запускается, затем останавливается
У меня есть служба Windows, которую я унаследовал от ушедшего разработчика. Служба Windows работает нормально в среде QA. Когда я устанавливаю службу и запускаю ее локально, я получаю эту ошибку:
Служба не может быть запущена. 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.
2 ответа
Проверьте код установщика. Часто вы обнаружите, что счетчики создаются в рамках установки (которая будет запускаться с правами администратора на клиентском сайте), а затем код использует их так, как будто они существуют, но не будет пытаться создать их, потому что они не ожидают наличия разрешения.
Если вы просто получаете исходный код и затем пытаетесь запустить его, классы счетчиков / счетчиков не существуют, поэтому вы сразу же падаете. (В качестве альтернативы проверьте, существует ли счетчик / у вас есть локальный администратор, если они написали код для его создания в службе.)
Видел это раньше, так упомянул об этом.
Присоединить отладчик и разбить на InvalidOperationException (первый шанс, то есть, когда выброшен)?