Los servicios HTTP no se pueden detener cuando se instala el servicio de implementación web de Microsoft
Este artículo le ayuda a resolver el problema en el que no puede detener los servicios HTTP mediante el comando NET STOP HTTP cuando se instala el Servicio de implementación web de Microsoft (MSDEPSVC).
Versión del producto original: Servicio de implementación web de Microsoft
Número KB original: 2597817
Síntomas
Imagina la siguiente situación: 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). Cuando intenta detener el servicio HTTP mediante la instrucción de línea de comandos, se muestra el siguiente mensaje de NET STOP HTTP 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 comando, se muestra NET STOP HTTP 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 en el Administrador de control de servicios. Cuando HTTP intenta detener, también necesita 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 detención del servicio.
Solución
Para resolver este problema, copie el siguiente script y ejecutarlo 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 acerca de la Herramienta de implementación web, vea Web Deploy 3.6.