安装 Microsoft Web 部署服务时,无法停止 HTTP 服务
本文可帮助你解决安装 Microsoft Web 部署服务 (MSDEPSVC) 时,无法使用 NET STOP HTTP 命令停止 HTTP 服务的问题。
原始产品版本: Microsoft Web 部署服务
原始 KB 数: 2597817
症状
请考虑以下应用场景: 您尝试在运行 Internet Information Services (IIS) 6、7 或 7.5 的服务器上停止 HTTP 服务。 服务器还安装了 Microsoft Web 部署服务 (MSDEPSVC) 。 尝试使用 NET STOP HTTP
命令行指令停止 HTTP 服务时,命令提示符中会显示以下错误消息:
HTTP 服务正在停止.....
无法停止 HTTP 服务。
如果再次运行 NET STOP HTTP
命令,将显示以下消息:
服务正在启动或停止。 请稍后重试。
原因
出现此问题的原因是 Microsoft Web 部署服务 (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
}
}
检查问题是否已修复。 如果问题已修复,您不用再往下看了。 如果问题没有修复,你可以联系技术支持部门。
References
有关 Web 部署工具的详细信息,请参阅 Web 部署 3.6。
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈