7

Questo è il codice che crea il contatore delle prestazioni:PerformanceCounter.NextValue() genera InvalidOperationException

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

Questo è dove l'eccezione accade:

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

Ecco il messaggio Exception:

"Messaggio di errore: il layout contatore per la categoria specificata non è valido, un contatore del tipo: AverageCount64, AverageTimer32, CounterMultiTimer, CounterMultiTimerInverse, CounterMultiTimer100Ns, CounterMultiTimer100NsInverse, RawFraction o SampleFraction devono essere immediatamente seguiti da qualsiasi tipo di contatore di base: AverageBase, CounterMultiBase, RawBase o SampleBase. "

Il messaggio di errore è abbastanza criptico. Non sono sicuro di cosa si possa fare per evitare l'eccezione in futuro.

dettagli

Questo accade su Windows Server 2008 R2 a 64 bit del sistema operativo. Il server FTP è IIS.

risposta

1

Non ho i IIS installato sul mio PC, ma se l'avessi fatto, ecco cosa mi piacerebbe provare:

  1. tenta di utilizzare generatore di codice di Visual Studio per WMI tramite drag-and-drop da Server Explorer. Ispeziona il codice generato e vedi se ci sono delle differenze dal tuo codice.
  2. Utilizzare il riflettore per vedere dove viene generata l'eccezione, impostare un punto di interruzione personalizzato all'interno di BCL e riprodurlo. Quindi analizzare i contenuti dello stack delle chiamate e cercare percorsi di codice sospetti o stati imprevisti.
0

Sembra che abbiano risolto un problema simile here. Forse devi impostare un contatore di base?

2

Almeno su Windows Server 2008 R2 con IIS 7.5 la categoria del contatore delle prestazioni è denominata "Servizio FTP Microsoft" non "Servizio FTP". Forse è diverso per le diverse versioni di OS/IIS, ma è facile da controllare.

Sul server di destinazione/macchina:

  1. Run "Performance Monitor"
  2. Fare clic su "Performance Monitor nel pannello di navigazione a sinistra
  3. Fare clic sull'icona più per aggiungere un contatore delle prestazioni
  4. Scroll in basso l'elenco dei contatori disponibili: cerca FTP o Microsoft FTP per vedere se esiste ... nota se non hai installato i servizi FTP Microsoft non vedrai il contatore delle prestazioni
  5. Una volta trovato, selezionalo e vedrai un elenco di istanze contatore specifiche che puoi richiedere. Una di queste istanze è il "_Total" a cui eri interessato.

Naturalmente questo dimostra anche che il contatore delle prestazioni funziona indipendentemente dal codice. Questa è una buona cosa sapere!

Per le migliori pratiche specifiche su come utilizzare Performance Counters in C#/.NET see this stackoverflow post.