7

Jest to kod, który tworzy licznik wydajności:PerformanceCounter.NextValue() wyrzuca InvalidOperationException

var ftpPerfCounter = new PerformanceCounter("FTP Service", "Current Connections", "_Total"); 

To gdzie wyjątek dzieje:

int cnt = (int)Math.Round(ftpPerfCounter.NextValue()); 

Oto wiadomość Exception:

"Komunikat o błędzie: Układ licznika dla określonej kategorii jest nieprawidłowy, licznik typu: AverageCount64, AverageTimer32, CounterMultiTimer, CounterMultiTimerInverse, CounterMultiTimer100Ns, CounterMultiTimer100NsInverse, RawFraction lub SampleFraction musi następować zaraz po jednym z podstawowych typów liczników: AverageBase, CounterMultiBase, RawBase lub SampleBase. "

Komunikat o błędzie jest dość zagadkowy. Nie jestem pewien, co można zrobić, aby uniknąć wyjątku w przyszłości.

Szczegóły

Dzieje się w systemie Windows Server 2008 R2 64-bitowy OS. Serwer FTP to IIS.

Odpowiedz

1

nie mam IIS zainstalowanych na moim komputerze, ale gdybym to zrobił, oto co bym spróbować:

  1. spróbuje użyć generator kodu Visual Studio dla WMI za pomocą operacji przeciągania i upuszczania z Server Explorer. Sprawdź wygenerowany kod i sprawdź, czy są jakieś różnice w stosunku do kodu.
  2. Użyj reflektora, aby zobaczyć, gdzie jest zgłaszany wyjątek, ustaw niestandardowy punkt przerwania wewnątrz BCL i powiel go. Następnie przeanalizuj zawartość stosu wywołań i poszukaj podejrzanych ścieżek kodu lub nieoczekiwanego stanu.
0

Wydaje się, że rozwiązały podobny problem here. Może musisz ustawić licznik bazowy?

2

Przynajmniej na moim Windows Server 2008 R2 z IIS 7.5 kategoria licznika wydajności nazywa się "Microsoft FTP Service", a nie "Usługa FTP". Być może jest inny dla różnych wersji OS/IIS, ale jest łatwy do sprawdzenia.

na serwerze docelowym/maszyny:

  1. Run "Performance Monitor"
  2. Kliknij „Performance Monitor w lewym panelu nawigacyjnym
  3. Kliknij ikonę plusa, aby dodać licznik wydajności
  4. Scroll w dół listę dostępnych liczników. Wyszukaj FTP lub Microsoft FTP, aby sprawdzić, czy istnieje ... zauważ, że jeśli nie masz zainstalowanych usług FTP Microsoft, nie zobaczysz licznika wydajności
  5. Kiedyś Znalezione, wybierz go, a zobaczysz listę konkretnych instancji liczników, które możesz wysłać do zapytania. Jednym z takich przypadków jest "_Total", który Cię interesował.

Oczywiście to również dowodzi, że licznik wydajności działa niezależnie od kodu. To dobrze wiedzieć!

Aby poznać konkretne sprawdzone metody pracy z Performance Counters in C#/.NET see this stackoverflow post.

Powiązane problemy