Home

AD FS 2.0: El servicio no se puede iniciar

webmaster's picture

En muchas ocasiones cuando estamos trabajando con servicios de federación de aplicaciones en servidores que no tienen conection a Internet nos encontramos con que nuestro servicio no puede iniciarse de forma normal ni con retraso, obteniendo el error  de AD FS 2.0: El servicio no se puede iniciar: "El servicio no respondió a la petición de inicio o del control de forma oportuna. Tambien posee retardo en el arranque o arranca de forma muy lenta. Esto puede ocurrir después de una instalación inicial o después de un arranque manual o incluso despues de reiniciar el servidor.Tambien nos podemos encontrar con errores parecidos a a este en el Event log: The System event log indicates a timeout failure similar to the following.

Source: Service Control Manager
 
Event ID: 7000
 
The AD FS 2.0 Windows Service service failed to start due to the following error:
 
The service did not respond to the start or control request in a timely fashion.
 

Las causas de este comportamiento son debido a que el administrador de control de servicios (SCM) se excede del tiempo de espera del inicio del servicio antes de que se haya completado. Esto es generalmente debido a la falta de conectividad a Internet desde el AD FS 2.0 Federation Server o AD FS 2.0 Federación servidor proxy. Al inicio del servicio, cuando el generatePublisherEvidence está habilitado para .NET 3.5, el servidor intentará conectarse a crl.microsoft.com través del puerto TCP 80. AD FS 2.0 no obtiene ninguna respuesta positiva o negativa de generatePublisherEvidence, y el valor por defecto (NULL) puede causar que el administrador de control de servicios pare el tiempo de espera mientras se espera en la conexión TCP / 80 para dejar de conectarse a crl.microsoft.com.

Existen tres opciones de resolver este problema. Todo esta en dependencia de lo que queramos que afecten nuestros cambios.

Opcion 1

Deshabilitar generatePublisherEvidence for para las aplicaciones que usen .NET 3.5

Para ello modifique el archivo C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\machine.config
<configuration>
 
    <runtime>
 
        <generatePublisherEvidence enabled="false"/>
 
    </runtime>
 
</configuration>
 
o en su defecto
 
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\CONFIG\machine.config
<configuration>
 
    <runtime>
 
        <generatePublisherEvidence enabled="false"/>
 
    </runtime>

Opcion 2

Incremetar el valor por defecto del SCM.

Arranque el Editor de registro (Regedit.exe).
Para cambiar el valor del ServicesPipeTimeout DWORD a 60000 en la clave de control siga los siguientes pasos:
Busque la siguiente clave del registro:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet
Click en el Control subclave.
Click derecho en ServicesPipeTimeout DWORD value, y después click en Modify.
Click en Decimal.
Escriba 60000, y después click OK.
Si el valor del ServicesPipeTimeout no está habilitado o no existe, agrege un nuevo valor DWORD, y establezca el valor a 60000 en la clave de Control. Para hacer esto siga los siguientes pasos:
Localice y haga click en la siguiente clave del registro:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet
Haga Click en la subclave.
En el Menu Edi, Haga click en New, y despues en agregar valor DWORD.
Escriba ServicesPipeTimeout, y pulse ENTER.
Click derecho en el ServicesPipeTimeout DWORD y escoja Modificar/Modify.
Selecciona Decimal.
Escriba el valor 60000, y después OK. 
 
El valor 60000 millisegundos es equivalente a 60 segundos o 1 minutio.
Nota: Estos cambios no tendran efecto hasta que reinicie el PC.
 

Opcion 3

 
Editar el  HOSTS file incluyendo la dirección de crl.microsoft.com hacia localhost:
Ejecutamos  Run Notepad (como Administrator)
Agregamos la siguiente linea al final del fichero:
127.0.0.1 crl.microsoft.com
 

Pero... Estas tres opciones no son la mejor vía para resover el problema por los siguientes motivos:

Option 1: La deshabilitación del generatePublisherEvidence, desabilitaría todo a nivel global, incluyendo otras aplicaciones .NET

Option 2: Extender el time out del servicio tambien affecta a otros servicios.
 
Option 3: Deshabilitar el accesso a crl.microsoft.com tambien puede afectar a otras aplicaciones .NET igual que la opcion 1
 

Opcion que solo afecta al ADFS

 
As this issue only related to "AD FS 2.0 Windows Service", we can disable the generatePublisherEvidence in the application specific config file located in the "C:\Program Files\Active Directory Federation Services 2.0\Microsoft.IdentityServer.Servicehost.exe.config" directly. Then it will only affect within the ADFS application
 
Disable Authenticode Signing Verification
 
If the service is simply slow to start and the server does not have Internet access, disable authenticode signing verification.
 
In this file:
C:\program files\Active Directory Federation Services 2.0\Microsoft.IdentityServer.Servicehost.exe.config
 
Add this tag within the runtime tag:
<generatePublisherEvidence enabled=”false”/>
 
It should look similar to this:
<runtime>
     <gcServer enabled="true"/>
     <generatePublisherEvidence enabled=”false”/>
</runtime>
 
Service will not start or Service does not automatically start
 
If the service will not start or Service does not automatically start follow these steps.
Ensure the service Startup Type is set to Automatic and is not set to Automatic (Delayed Start).  Change if necessary.
Set ServicesPipeTimeout to 60 seconds or more.  Follow this link for detailed instructions.
 

 

Contacto: 
webmaster