Les services HTTP ne peuvent pas être arrêtés lors de l’installation du service de déploiement web Microsoft

Cet article vous aide à résoudre le problème dans lequel vous ne pouvez pas arrêter les services HTTP à l’aide de la commande NET STOP HTTP lorsque le service de déploiement web Microsoft (MSDEPSVC) est installé.

Version d’origine du produit : Service de déploiement web Microsoft
Numéro de la base de connaissances d’origine : 2597817

Symptômes

Prenons le cas de figure suivant. Vous essayez d’arrêter le service HTTP sur un serveur exécutant Internet Information Services (IIS) 6, 7 ou 7.5. Le service de déploiement web Microsoft (MSDEPSVC) est également installé sur le serveur. Lorsque vous essayez d’arrêter le service HTTP à l’aide de l’instruction NET STOP HTTP de ligne de commande, le message d’erreur suivant s’affiche dans l’invite de commandes :

Le service HTTP s’arrête.....
Impossible d’arrêter le service HTTP.

Si vous réexécutez la NET STOP HTTP commande, le message suivant s’affiche :

Le service démarre ou s’arrête. Veuillez réessayer plus tard.

Cause

Ce problème se produit car le service de déploiement web Microsoft (MSDEPSVC) dépend du service HTTP, mais lorsque le MSDEPSVC est initialement installé, cette dépendance n’est pas inscrite auprès du Gestionnaire de contrôle de service. Lorsque HTTP tente de s’arrêter, il doit également arrêter ses services dépendants. Toutefois, HTTP n’est pas conscient qu’il doit arrêter MSDEPSVC en raison de la dépendance non inscrite et, par conséquent, l’arrêt du service échoue.

Résolution

Pour résoudre ce problème, copiez le script suivant et exécutez-le en tant que script PowerShell sur le serveur. Le script garantit que toutes les dépendances du service HTTP sont correctement inscrites.

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

Vérifiez si le problème est résolu. Si c’est le cas, vous n’avez plus besoin de cette section. Sinon, vous pouvez contacter le support technique.

References

Pour plus d’informations sur l’outil déploiement web, consultez Web Deploy 3.6.