Compartir a través de


No se pueden detener los servicios HTTP cuando se instala el servicio de implementación web de Microsoft

Este artículo le ayuda a resolver el problema en el que no se pueden detener los servicios HTTP mediante el comando NET STOP HTTP cuando se instala el Servicio de implementación web de Microsoft (MSDEPSVC).

Versión original del producto: Servicio de implementación web de Microsoft
Número de KB original: 2597817

Síntomas

Considere el siguiente escenario: Está intentando detener el servicio HTTP en un servidor que ejecuta Internet Information Services (IIS) 6, 7 o 7.5. El servidor también tiene instalado el servicio de implementación web de Microsoft (MSDEPSVC). Al intentar detener el servicio HTTP mediante la NET STOP HTTP instrucción de línea de comandos, se muestra el siguiente mensaje de error en el símbolo del sistema:

El servicio HTTP se está deteniendo.....
No se pudo detener el servicio HTTP.

Si vuelve a ejecutar el NET STOP HTTP comando, se muestra el siguiente mensaje:

El servicio se está iniciando o deteniendo. Inténtelo de nuevo más tarde.

Causa

Este problema se produce porque el servicio de implementación web de Microsoft (MSDEPSVC) depende del servicio HTTP, pero cuando MSDEPSVC está instalado inicialmente, esa dependencia no está registrada con Service Control Manager. Cuando HTTP intenta detenerse, también debe detener sus servicios dependientes. Sin embargo, HTTP no es consciente de que necesita detener MSDEPSVC debido a la dependencia no registrada y, por lo tanto, se produce un error en la página de detención del servicio.

Solución

Para resolver este problema, copie el siguiente script y ejecútelo como un script de PowerShell en el servidor. El script garantizará que todas las dependencias del servicio HTTP estén registradas correctamente.

$bFoundHttp = $false
$msdepsvc = Get-Service -name MsDepSvc
$reqsvcs = "HTTP"
$msdepsvc.ServicesDependedOn | ForEach-Object `
{
    if($_.Name -eq "HTTP")
    {
      $bFoundHttp = $true
    }
    else
    {
    if($_.Name -ne "")
     {
       $reqsvcs += "/" + $_.Name
     }
    }
}
if ($bFoundHttp -eq $false)
{
    $status = $msdepsvc.Status
    if($status -eq "Running")
    {
      Stop-Service -name MsDepSvc
    }

    sc.exe config MsDepSvc depend= $reqsvcs
    if($status -eq "Running")
    {
      Start-Service -name MsDepSvc
    }
}

Compruebe si se ha solucionado el problema. Si se ha solucionado, ya ha terminado con esta sección. En caso contrario, puede comunicarse con el soporte técnico.

Referencias

Para obtener más información sobre la herramienta de implementación web, consulte Web Deploy 3.6.