Службы HTTP не могут быть остановлены при установке службы веб-развертывания Майкрософт

Эта статья поможет устранить проблему, из-за которой невозможно остановить службы HTTP с помощью команды HTTP NET STOP при установке службы веб-развертывания Майкрософт (MSDEPSVC).

Исходная версия продукта: Служба веб-развертывания Майкрософт
Исходный номер базы знаний: 2597817

Симптомы

Рассмотрим следующий сценарий. Вы пытаетесь остановить службу HTTP на сервере, на котором запущены службы IIS 6, 7 или 7.5. На сервере также установлена служба веб-развертывания Майкрософт (MSDEPSVC). При попытке остановить службу HTTP с помощью инструкции NET STOP HTTP командной строки в командной строке отображается следующее сообщение об ошибке:

Служба HTTP останавливается.....
Не удалось остановить службу HTTP.

При повторном выполнении NET STOP HTTP команды отобразится следующее сообщение:

Служба запускается или останавливается. Повторите попытку позже.

Причина

Эта проблема возникает из-за того, что служба веб-развертывания Майкрософт (MSDEPSVC) зависит от службы HTTP, но при первоначальной установке MSDEPSVC зависимость не регистрируется в диспетчере управления службами. Когда HTTP пытается остановиться, ему также необходимо остановить свои зависимые службы. Однако HTTP не знает, что необходимо остановить MSDEPSVC из-за незарегистрированной зависимости, и поэтому происходит сбой остановки службы.

Разрешение

Чтобы устранить эту проблему, скопируйте следующий сценарий и запустите его как скрипт PowerShell на сервере. Скрипт обеспечит правильную регистрацию всех зависимостей службы HTTP.

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

Проверьте, устранена ли проблема. Если устранена, пропустите дальнейшие инструкции, приведенные в этом разделе. Если нет, обратитесь в службу технической поддержки.

Ссылки

Дополнительные сведения о средстве веб-развертывания см. в разделе Веб-развертывание 3.6.