BlogServiceHost.Create()

WCF & Azure - Il blog di Fabio Cozzolino

Recent Posts

Tags

My

Twitter

Community

Archives

Email Notifications

Social Bar Widget

Debugging ‘OnStart’ Windows Service Event

Quando sviluppiamo Windows Service capita di non riuscire a capire perchè il servizio non parte. Magari cerchiamo di accedere ad un cartella e non abbiamo i permessi oppure apriamo l’host di un servizio WCF e non possiamo farlo perchè abbiamo sbagliato la configurazione. I motivi possono essere diversi, ma intanto il servizio non parte e non possiamo fare l’attach perchè finchè ci muoviamo con VS, il processo si è già chiuso.

La soluzione è semplice. Basta inserire il seguente codice:

   1: protected override void OnStart(string[] args) 
   2: { 
   3: #if DEBUG
   4:     System.Diagnostics.Debugger.Break(); 
   5: #endif
   6:  
   7:     // … 
   8: }
   9:  

quindi all’avvio del servizio sarà automaticamente avviato il debugger.

Comments

Tommaso Caldarola said:

Normalmente non è una buona norma avere logica nell'OnStart, io preferisco avere tutto in una dll separata in modo da poter usare una semplice GUI per scopi di debug.

# November 19, 2010 3:19 AM

Fabio.Cozzolino said:

Senza dubbio, ma l'ambiente è comunque differente e potresti trovarti con problematiche che l'utilizzo della GUI "potrebbe" non evidenziare (ad esempio l'account), altrimenti potremmo parlare anche di unit test, tdd e chi più ne ha più ne metta.

Non ho postato una best practice, ma un modo per individuare e risolvere la particolare problematica che mi è stata più volte chiesta. :)

# November 19, 2010 4:05 AM

leo.alario said:

Io ho risolto lo stesso problema in questo modo:

protected override void OnStart(string[] args)

{

 System.Threading.Thread.Sleep(5000);

}

durante il tempo di latenza del servizio faccio l'attach con il debugger di VS.

Così interrompo l'esecuzione solo quando serve :)

# November 19, 2010 6:37 AM