Domanda

Ho un servizio di windows che esegue varie operazioni di monitoraggio.Tuttavia, quando si esegue il protocollo SNMP relativi controlli, ho sempre un'eccezione NullReference.Il codice funziona bene quando viene eseguito tramite l'interfaccia utente (sotto il mio nome utente e password), ma sempre errori durante l'esecuzione del servizio.Ho provato a eseguire il servizio come diversi account utente (compreso il mio), senza fortuna.Ho provato a sostituire il monitoraggio SNMP codice di chiamare il cmdlet di PowerShell get-snmp (dal /n NetCmdlets), ma che restituisce lo stesso errore.

L'applicazione che sto lavorando con è PolyMon.

Tutte le idee?

È stato utile?

Soluzione

Alcuni modi per eseguire il debug:

  • C'è qualche altra informazione nel registro degli eventi di Windows?
  • Credo che si dovrebbe essere in grado di ascoltare qualche tipo di global-evento di eccezione come Application_Exception in servizi di windows.Non ricordo il nome esatto, ma si può atelast dump dello stack trace da lì.
  • Si dovrebbe essere in grado di avviare il debug del progetto in modalità di servizio.

Alcuni frammenti di codice/stack trace/informazioni sarà sicuramente di aiuto.

Altri suggerimenti

È possibile collegare un debugger per l'esecuzione di un processo, prima di attivare l'eccezione.Questo dovrebbe darvi un'idea di cosa succede con l'applicazione.

Un paio di cose che abbiamo visto di più sulle differenze tra interattiva vs servizi, ma potrebbe aiutare...

Una cosa che ho visto che non mi sembra rilevante è la differenza con quello che è l'utente vs percorso di sistema.

Un'altra cosa che abbiamo visto riguarda i file temporanei, il servizio che abbiamo avuto è stato la creazione di un sacco in windows emp - abbiamo scovato questo quando ha creato qualcosa di simile a 65000 di questi file e, quindi, raggiunto il limite di ciò che una directory può contenere...

Saluti, Chris

Ho affrontato questo tipo di problemi prima, se non l'hai già trovato la risposta, suggerisco il seguente:

  • Abilitare l'analisi/registrazione in tutte le applicazioni di terze parti e le librerie si utilizza tale che gli errori vengono registrati i file invece di stdout o stderr.Spesso, troverete un indizio da questi.
  • Il Servizio di Windows potrebbe essere basandosi su una rete Windows impostato per essere a posto prima dell'avvio.Questo può essere dovuto all'ambiente (PERCORSO, come altri hanno suggerito) o a causa di 'dipendenze' su altri servizi.

Jay.........

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top