PerformanceCounter не работает при запуске в качестве службы - PullRequest
1 голос
/ 13 мая 2019
Unhandled error: Counter '% Processor Time' does not exist in the specified Category. - Counter '% Processor Time' does not exist in the specified Category. System.InvalidOperationException System.Diagnostics.CounterDefinitionSample GetCounterDefinitionSample(System.String)    at System.Diagnostics.CategorySample.GetCounterDefinitionSample(String counter)
   at System.Diagnostics.PerformanceCounter.NextSample()
   at System.Diagnostics.PerformanceCounter.NextValue()

- это сообщение об ошибке, которое появляется у одного из наших клиентов для приведенного ниже кода при запуске в нашем веб-приложении Silverlight, запущенном из службы Windows. Он запускает его на Windows Server 2016. Это второй раз, когда мы видели эту точную ошибку в течение 20 лет. Так что это случается не часто.

PerformanceCounter cpuCounter = new PerformanceCounter("Process", "% Processor Time", "_Total");
double cpu = cpuCounter.NextValue();

Я поместил эти две строки в тестовое консольное приложение .Net и попросил клиента запустить его на сервере, и он работает просто отлично. Тестовое приложение также получило все доступные категории, и «Процесс» был одной из них. Я видел, что многие счетчики локализованы. У меня также был клиент, чтобы запустить

lodctr /R

на случай, если в библиотеке Performance Counter возникла путаница. Это не помогло. Он должен был выполнить эту команду в папке syswow64, иначе это не удалось.

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

Есть идеи, почему он может потерпеть неудачу?

Edit: Настройка локального администратора на вкладке Вход в систему для сервиса не помогла

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...