作为服务运行时,PerformanceCounter无法工作

时间:2019-05-13 18:25:24

标签: c# silverlight performancecounter

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服务作为本地系统帐户运行。

任何想法为什么会失败?

编辑: 在服务的“登录”选项卡上设置本地管理员没有帮助

0 个答案:

没有答案