PerformanceCounter.NextValue() throws InvalidOperationException
This is the code that creates the performance counter:
var ftpPerfCounter = new PerformanceCounter("FTP Service", "Current Connections", "_Total");
This is where the exception happens:
int cnt = (int)Math.Round(ftpPerfCounter.NextValue());
Here's the Exception
message:
"Error Message: The Counter layout for the Category specified is invalid, a counter of the type: AverageCount64, AverageTimer32, CounterMultiTimer, CounterMultiTimerInverse, CounterMultiTimer100Ns, CounterMultiTimer100NsInverse, RawFraction, or SampleFraction has to be immediately followed by any of the base counter types: AverageBase, CounterMultiBase, RawBase or SampleBase."
The error message is pretty cryptic. I am not sure what can be done to avoid the exception in the future.
Details
This happens on Windows Server 2008 R2 64-bit OS. The FTP Server is IIS.
At least on my Windows Server 2008 R2 with IIS 7.5 the performance counter category is called "Microsoft FTP Service" not "FTP Service". Perhaps it's different for different OS/IIS versions, buts its easy to check.
On your target server/machine:
Of course this also proves that the performance counter works independently of your code. That's a good thing to know!
For specific best practices of how to work with Performance Counters in C#/.NET see this stackoverflow post.
I don't have the IIS installed on my PC, but if I did, here's what I'd try:
They seem to have solved a similar problem here. Maybe you have to set up a base counter?
链接地址: http://www.djcxy.com/p/10794.html上一篇: 在Spring上下文中使用Maven settings.xml属性
下一篇: PerformanceCounter.NextValue()抛出InvalidOperationException