Os serviços HTTP não podem ser interrompidos quando o Serviço de Implantação Web da Microsoft é instalado

Este artigo ajuda você a resolve o problema em que não é possível parar os serviços HTTP usando o comando HTTP NET STOP quando o MSDEPSVC (Serviço de Implantação Web da Microsoft) está instalado.

Versão original do produto: Serviço de Implantação Web da Microsoft
Número de KB original: 2597817

Sintomas

Considere o seguinte cenário. Você está tentando parar o serviço HTTP em um servidor que executa os Serviços de Informações da Internet (IIS) 6, 7 ou 7.5. O servidor também tem o MSDEPSVC (Serviço de Implantação Web da Microsoft) instalado. Quando você tenta parar o serviço HTTP usando a NET STOP HTTP instrução de linha de comando, a seguinte mensagem de erro é exibida no prompt de comando:

O serviço HTTP está parando.....
O serviço HTTP não pôde ser interrompido.

Se você executar o NET STOP HTTP comando novamente, a seguinte mensagem será exibida:

O serviço está começando ou parando. Tente novamente mais tarde.

Motivo

Esse problema ocorre porque o MSDEPSVC (Serviço de Implantação Web da Microsoft) depende do serviço HTTP, mas quando o MSDEPSVC é instalado inicialmente, essa dependência não é registrada no Service Control Manager. Quando o HTTP tenta parar, ele também precisa parar seus serviços dependentes. No entanto, o HTTP não está ciente de que precisa parar o MSDEPSVC devido à dependência não registrada e, portanto, a paralisação do serviço falha.

Resolução

Para resolve esse problema, copie o script a seguir e execute-o como um script do PowerShell no servidor. O script garantirá que todas as dependências do serviço HTTP sejam registradas corretamente.

$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
    }
}

Verifique se o problema foi corrigido. Se o problema tiver sido corrigido, você terá concluído esta seção. Se o problema não tiver sido corrigido, você poderá contatar o suporte.

Referências

Para obter mais informações sobre a Ferramenta de Implantação da Web, consulte Implantação da Web 3.6.