PerformanceCounter.NextValue()抛出InvalidOperationException

dmg*_*dmg 7 c# performancecounter invalidoperationexception iis-7.5 windows-server-2008-r2

这是创建性能计数器的代码:

var ftpPerfCounter = new PerformanceCounter("FTP Service", "Current Connections", "_Total");
Run Code Online (Sandbox Code Playgroud)

这是异常发生的地方:

int cnt = (int)Math.Round(ftpPerfCounter.NextValue());
Run Code Online (Sandbox Code Playgroud)

这是Exception消息:

"错误消息:指定类别的计数器布局无效,类型的计数器:AverageCount64,AverageTimer32,CounterMultiTimer,CounterMultiTimerInverse,CounterMultiTimer100Ns,CounterMultiTimer100NsInverse,RawFraction或SampleFraction必须紧跟任何基本计数器类型:AverageBase ,CounterMultiBase,RawBase或SampleBase."

错误消息非常神秘.我不知道如何避免将来发生异常.

细节

这种情况发生在Windows Server 2008 R2 64位操作系统上.FTP服务器是IIS.

Gre*_*egC 1

我的电脑上没有安装 IIS,但如果安装了,我会尝试以下操作:

  1. 尝试通过从服务器资源管理器中拖放来使用 Visual Studio 的 WMI 代码生成器。检查生成的代码并查看与您的代码是否有任何差异。
  2. 使用反射器查看抛出异常的位置,在 BCL 内设置自定义断点并重现。然后分析调用堆栈内容并查找可疑代码路径或意外状态。