7

Este es el código que crea el contador de rendimiento:PerformanceCounter.NextValue() lanza InvalidOperationException

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

Aquí es donde ocurre la excepción:

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

Aquí es el mensaje Exception:

"Mensaje de error: el diseño del contador para la categoría especificada no es válido, un contador del tipo: AverageCount64, AverageTimer32, CounterMultiTimer, CounterMultiTimerInverse, CounterMultiTimer100Ns, CounterMultiTimer100NsInverse, RawFraction o SampleFraction tiene que ser seguido inmediatamente por cualquiera de los tipos de contador base: AverageBase, CounterMultiBase, RawBase o SampleBase. "

El mensaje de error es bastante críptico. No estoy seguro de qué se puede hacer para evitar la excepción en el futuro.

detalles

Esto sucede en Windows Server 2008 R2 del sistema operativo de 64 bits. El servidor FTP es IIS.

Respuesta

1

no tengo los IIS instalado en mi PC, pero si lo hiciera, esto es lo que iba a tratar:

  1. tratan de usar generador de código de Visual Studio para WMI mediante arrastrar y soltar desde Server Explorer. Inspeccione el código generado y vea si hay alguna diferencia con respecto a su código.
  2. Utilice el reflector para ver dónde se produce la excepción, establezca un punto de interrupción personalizado dentro de BCL y reproduzca. Luego, analice los contenidos de la pila de llamadas y busque rutas de códigos sospechosas o estado inesperado.
0

Parecen haber resuelto un problema similar here. Tal vez tienes que configurar un contador de base?

2

Al menos en mi Windows Server 2008 R2 con IIS 7.5, la categoría del contador de rendimiento se denomina "Servicio FTP de Microsoft", no "Servicio FTP". Tal vez sea diferente para las diferentes versiones de OS/IIS, pero es fácil de verificar.

En el servidor de destino/de la máquina:

  1. Ejecutar "Monitor de rendimiento"
  2. Haga clic en "Monitor de rendimiento en el panel de navegación izquierdo
  3. Haga clic en el icono más para añadir un contador de rendimiento
  4. Scroll en la lista de contadores disponibles. Busque FTP o Microsoft FTP para ver si existe ... tenga en cuenta que si no tiene instalados los servicios FTP de Microsoft, no verá el contador de rendimiento.
  5. Una vez encontrado, selecciónelo y verá una lista de instancias de contador específicas que puede consultar. Uno de esos casos es el '_Total' en el que estaba interesado.

Por supuesto, esto también prueba que el contador de rendimiento funciona independientemente de su código. ¡Eso es bueno saber!

Para conocer las mejores prácticas específicas de cómo trabajar con Performance Counters in C#/.NET see this stackoverflow post.

Cuestiones relacionadas