Questo problema è molto comune per gli eseguibili del servizio .NET firmati: il servizio non verrà avviato all'avvio, ma funzionerà correttamente se avviato manualmente in seguito. L'utilizzo di ServiceBase.RequestAdditionalTime è irrilevante: infatti, nessun codice utente viene eseguito prima del timeout della richiesta di avvio del servizio. Questo effetto è ancora più pronunciato su macchine senza connettività Internet: in tal caso, anche l'avvio manuale del servizio da SCM avrà esito negativo.
Per risolvere questo problema, disable the verification of the Authenticode signature at load time in order to create Publisher evidence, con l'aggiunta dei seguenti elementi al file exe.config:
<configuration>
<runtime>
<generatePublisherEvidence enabled="false"/>
</runtime>
</configuration>
Publisher evidenza è un (CAS) caratteristica poco utilizzata Code Access Security: solo se il vostro servizio si affida a PublisherMembershipCondition la disabilitazione causa problemi. In tutti gli altri casi, i guasti di avvio permanenti o intermittenti scompariranno, non richiedendo più che il runtime esegua costosi controlli dei certificati (comprese le ricerche degli elenchi di revoche).
Modifica, luglio 2010: Per le applicazioni che utilizzano la versione 4.0 di .NET Framework, questa soluzione alternativa non è più necessaria.
Anche se l'installazione di una patch in cui MS dice che non è testata non suona molto attraente su un sistema di produzione ... –