Pregunta

Tengo un servicio de Windows que ejecuta varias operaciones de monitoreo del sistema.Sin embargo, cuando ejecuto comprobaciones relacionadas con SNMP, siempre obtengo una excepción NullReference.El código funciona bien cuando se ejecuta a través de la interfaz de usuario (con mi nombre de usuario y contraseña), pero siempre falla al ejecutarse como servicio.Intenté ejecutar el servicio con diferentes cuentas de usuario (incluida la mía), sin suerte.Intenté reemplazar el código de monitoreo SNMP llamando al cmdlet get-snmp de PowerShell (desde /n NetCmdlets), pero arroja el mismo error.

La aplicación con la que estoy trabajando es PoliMon.

¿Algunas ideas?

¿Fue útil?

Solución

Algunas formas de depurar:

  • ¿Hay alguna información adicional en el registro de eventos de Windows?
  • Creo que debería poder escuchar algún tipo de evento de excepción global como Application_Exception en los servicios de Windows.No recuerdo el nombre exacto, pero puedes realizar el último seguimiento de la pila de volcado desde allí.
  • Debería poder comenzar a depurar el proyecto en modo de servicio.

Algunos fragmentos de código/rastreo de pila/información definitivamente ayudarán.

Otros consejos

Puede adjuntar un depurador al proceso en ejecución antes de activar la excepción.Esto debería darle una mejor idea de qué pasa con la aplicación.

Hemos visto un par de cosas: más sobre las diferencias entre servicios interactivos y servicios, pero podrían ayudar...

Una cosa que hemos visto que no parece relevante es la diferencia entre lo que hay en la ruta del usuario y del sistema.

Otra cosa que hemos visto se relaciona con los archivos temporales: el servicio que teníamos creaba muchos en el directorio windows emp. Lo rastreamos cuando creó algo así como 65000 de estos archivos y, por lo tanto, alcanzó el límite de lo que un directorio puede contener. ...

Saludos, Chris

He abordado este tipo de problemas antes; si aún no has encontrado la respuesta, te sugiero lo siguiente:

  • Habilite el seguimiento/registro en todas las aplicaciones y bibliotecas de terceros que esté utilizando de modo que los errores se registren en archivos en lugar de en stdout o stderr.Muchas veces, encontrarás una pista en estos.
  • Es posible que su servicio de Windows dependa de alguna red de Windows configurada antes del inicio.Esto puede deberse al entorno (PATH, como han sugerido otros) o a "dependencias" de otros servicios.

Arrendajo.........

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top