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()
是在Windows服务启动的Silverlight Web应用程序中运行时为以下代码显示给我们的一位客户的错误消息。他在Windows Server 2016上运行它。这是我们20年来第二次看到此确切错误。因此,这种情况不会经常发生。
PerformanceCounter cpuCounter = new PerformanceCounter("Process", "% Processor Time", "_Total");
double cpu = cpuCounter.NextValue();
我将这两行代码放入一个测试的.Net控制台应用程序中,并要求客户在服务器上运行它,并且一切正常。测试应用程序还获得了所有可用的类别,“过程”就是其中之一。我看到很多柜台都是本地化的。我也让客户运行
lodctr /R
以防性能计数器库混乱。这没有帮助。他必须在syswow64文件夹中运行此命令,否则它将失败。
当客户运行测试应用程序时,他以管理员身份登录Windows。 Windows服务作为本地系统帐户运行。
任何想法为什么会失败?
编辑: 在服务的“登录”选项卡上设置本地管理员没有帮助