Поделиться через


Не удается остановить http-службы при установке службы веб-развертывания Майкрософт

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

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

Симптомы

Рассмотрим следующий сценарий. Вы пытаетесь остановить службу HTTP на сервере под управлением службы IIS (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".