本文帮助你解决在 Windows 10 或 Windows Server 2016 上升级到版本 1709(创意者更新)后,Web 应用程序无法启动,并返回 HTTP 503 错误和 Windows 激活服务 (WAS) 事件 5189 的问题。
原始产品版本:Windows 10 企业版、Windows 10 专业版、Windows Server 2016 Standard、Windows Server 2016 Datacenter
原始 KB 数: 4050891
现象
假设出现了下面这种情景:
- 你有一台运行已启用 Internet Information Services(IIS)的 Windows 10 或 Windows Server 2016 的计算机。
- 升级到 Windows 10 版本 1709(Fall Creators Update)或 Windows Server 2016 版本 1709。
升级后,某些 Web 应用程序不会启动,并返回以下 HTTP 503 错误消息:
服务不可用
HTTP 错误 503。 服务不可用。
此外,WAS 事件 5189 记录在事件日志中:
Windows 进程激活服务未能为应用程序池“DefaultAppPool<”>生成应用程序池配置文件。 错误类型为“5”。 若要解决此问题,请确保 applicationhost.config 文件正确,并重新提交上次进行的配置更改。 数据字段包含错误号。
解决方法
若要解决此问题,请手动删除由Windows 更新创建的符号链接。 要做到这一点,请按照以下步骤操作。
注意
符号链接可以像常规文件一样删除。
使用“以管理员身份运行” 选项打开命令提示符窗口。
运行以下命令:
net stop WAS /y rmdir /s /q C:\inetpub\temp\appPools net start W3SVC
原因
WAS 在典型操作期间为文件夹中的每个 IIS 应用程序池 C:\inetpub\temp\appPools
创建临时配置文件。
在初始升级阶段,Windows 更新扫描现有文件夹和文件(在 Windows 文件夹外部),并记录在升级后要还原的路径。 但是,由于配置文件是临时的,因此在 WAS 停止时会将其删除。
在Windows 更新的下一阶段,这些以前扫描的文件和文件夹将复制到临时升级位置。 升级 Windows 后,Windows 更新创建一个符号链接,指向复制到临时升级位置的每个文件夹,然后再尝试将这些文件和文件夹还原到其原始位置。
但是,由于这些临时配置文件不再存在,Windows 更新不会删除符号链接。
当 Windows 进程激活服务 (WAS) 试图作为 IIS 工作进程启动时,由于符号链接的存在,它不会创建用于写入配置的临时文件夹。 因此,Http.Sys 返回 HTTP 503 错误。