Este problema es muy común para ejecutables de servicio .NET firmados: el servicio no se iniciará en el momento del arranque, pero se ejecutará correctamente cuando se inicie manualmente después. Si se usa ServiceBase.RequestAdditionalTime es irrelevante: de hecho, ningún código de usuario se ejecuta en absoluto antes de que la solicitud de inicio del servicio expire. Este efecto es aún más pronunciado en máquinas sin conectividad a Internet: en ese caso, incluso el inicio manual del servicio desde el SCM fallará.
Para resolver este problema, disable the verification of the Authenticode signature at load time in order to create Publisher evidence, mediante la adición de los siguientes elementos para su archivo exe.config:
<configuration>
<runtime>
<generatePublisherEvidence enabled="false"/>
</runtime>
</configuration>
pruebas Editor es una característica poco usada Código de Acceso de Seguridad (CAS): sólo si su servicio se basa en PublisherMembershipCondition lo deshabilitará y causará problemas. En todos los demás casos, las fallas de inicio permanentes o intermitentes desaparecerán, al no requerir más el tiempo de ejecución para realizar costosas comprobaciones de certificados (incluidas las búsquedas de listas de revocación).
edición, julio de 2010: Para aplicaciones que utilizan la versión 4.0 de .NET Framework, ya no se requiere esta solución.
Aunque instalar un parche donde MS dice que no se ha probado no suena muy atractivo en un sistema de producción ... –