Udostępnij za pośrednictwem


Nie można zatrzymać usług HTTP po zainstalowaniu usługi wdrażania w sieci Web firmy Microsoft

Ten artykuł ułatwia rozwiązanie problemu polegającego na tym, że nie można zatrzymać usług HTTP za pomocą polecenia NET STOP HTTP po zainstalowaniu usługi microsoft Web Deployment Service (MSDEPSVC).

Oryginalna wersja produktu: Usługa wdrażania w sieci Web firmy Microsoft
Oryginalny numer KB: 2597817

Symptomy

Rozważmy następujący scenariusz. Próbujesz zatrzymać usługę HTTP na serwerze z uruchomionymi usługami Internet Information Services (IIS) 6, 7 lub 7.5. Na serwerze zainstalowano również usługę microsoft Web Deployment Service (MSDEPSVC). Podczas próby zatrzymania usługi HTTP przy użyciu NET STOP HTTP instrukcji wiersza polecenia w wierszu polecenia zostanie wyświetlony następujący komunikat o błędzie w wierszu polecenia:

Usługa HTTP jest zatrzymywana.....
Nie można zatrzymać usługi HTTP.

Jeśli ponownie uruchomisz NET STOP HTTP polecenie, zostanie wyświetlony następujący komunikat:

Usługa jest uruchamiana lub zatrzymywana. Spróbuj ponownie później.

Przyczyna

Ten problem występuje, ponieważ usługa wdrażania w sieci Web firmy Microsoft (MSDEPSVC) zależy od usługi HTTP, ale gdy program MSDEPSVC jest początkowo zainstalowany, ta zależność nie jest zarejestrowana w Menedżerze kontroli usług. Gdy protokół HTTP próbuje zatrzymać, musi również zatrzymać swoje usługi zależne. Jednak protokół HTTP nie jest świadomy, że musi zatrzymać program MSDEPSVC ze względu na niezarejestrowaną zależność i w związku z tym przerwanie usługi kończy się niepowodzeniem.

Rozwiązanie

Aby rozwiązać ten problem, skopiuj następujący skrypt i uruchom go jako skrypt programu PowerShell na serwerze. Skrypt zapewni prawidłowe zarejestrowanie wszystkich zależności usługi 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
    }
}

Sprawdź, czy problem został rozwiązany. Jeśli problem został rozwiązany, to koniec pracy z tą sekcją. Jeśli problem nie został rozwiązany, można skontaktować się z pomocą techniczną.

Informacje

Aby uzyskać więcej informacji na temat narzędzia wdrażania sieci Web, zobacz Web Deploy 3.6.