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:
Настройка локального администратора на вкладке Вход в систему для сервиса не помогла