Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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.

like image 458
dmg Avatar asked May 24 '12 14:05

dmg


1 Answers

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:

  1. Run "Performance Monitor"
  2. Click "Performance Monitor in the left navigation pane
  3. Click the plus icon to Add a performance counter
  4. Scroll down the list of available counters. Look for FTP or Microsoft FTP to see if it exists... note if you don't have Microsoft FTP services installed you won't see the performance counter.
  5. Once found, select it, and you'll see a list of specific counter instances you can query. One of those instances is the '_Total' you were interested in.

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.

like image 61
BenSwayne Avatar answered Sep 21 '22 15:09

BenSwayne