备注:该文档有另一个姊妹篇,介绍如何修复下游服务器一直有处于需要文件下载的状况。
问题现象:
客户端是Win10 1803,希望通过WSUS更新服务器进行升级到目前最新的发行版Win10 1809,然而过程并不顺利,在阅读更新日志后,可以看到大量关于下载资源不正常的报错。
日志路径,"C:\Windows\SoftwareDistribution\ReportingEvents.log" 。
关于错误信息的摘要,红色的高亮信息是典型的文件下载异常(0x8024200)代码
- l {1F33AACA-5431-423D-9D5D-8385CD39AEB5} 2019-02-18 08:45:12:250+08001 181 [AGENT_INSTALLING_STARTED] 101{440669BC-73A4-43C4-80EF-61FCE01F88EE} 2010 UpdateOrchestratorSuccessContent Install Installation Started: Windows has started installing the following update: 针对 Windows 10 功能更新 (企业版),版本 1809,zh-cn x64 lrAkKmIW60y+eJoM.1.1.6.1.1.0
- l {320D706D-8834-48A2-AE0B-CE33F5B73D81} 2019-02-18 08:45:35:100+08001 182 [AGENT_INSTALLING_FAILED]101{440669BC-73A4-43C4-80EF-61FCE01F88EE} 2018024200d UpdateOrchestratorFailureContent Install Installation Failure: Windows failed to install the following update with error 0x8024200d: 针对 Windows 10 功能更新 (企业版),版本 1809,zh-cn x64. lrAkKmIW60y+eJoM.1.1.6.1.3.0
- l {0885A413-4565-4F2A-9666-EDF81FA1EC89} 2019-02-18 08:45:35:390+08001 181 [AGENT_INSTALLING_STARTED] 101{C30C062E-6905-42CD-839C-084B3D54EE61} 2000 UpdateOrchestratorSuccessContent Install Installation Started: Windows has started installing the following update: 针对 Windows 10 功能更新 (企业版),版本 1809,zh-cn lrAkKmIW60y+eJoM.1.2.6.1.1.0
- l {6A9966A2-0A32-4203-80DA-F6C6C177A835} 2019-02-18 08:45:53:813+08001 182 [AGENT_INSTALLING_FAILED]101{C30C062E-6905-42CD-839C-084B3D54EE61} 2008024200d UpdateOrchestratorFailureContent Install Installation Failure: Windows failed to install the following update with error 0x8024200d: 针对 Windows 10 功能更新 (企业版),版本 1809,zh-cn. lrAkKmIW60y+eJoM.1.2.6.1.3.0
解决问题:
针对这种下载问题,首先需要确定这个文件是否存在于WSUS更新服务器上,但是如何知道是那个文件呢?
本例我使用 HTTPNetworkSniffer网络嗅探工具捕获关于HTTP协议的请求,工具运行在Win10 1803上,使用更新操作后没多久就抓到了404返回的错误信息。
图 1在某个路径下的esd文件无法下载/Content/79/A4991F267F93943292DAD5C66EAA4796BD859279.esd
因为UserAgent是Microsoft-Delivery-Optimization/10.0 想排查一下是不是更新代理的问题,通过复制URL到浏览器中下载,依旧得到404的报错信息。
图 2使用浏览器下载依旧报错404,此时的User Agent 已经是Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36
通过上述信息,可以明确更新服务器的设置出现了问题。
由于更新服务器是Win2012R2,这个版本的服务器IIS是8.5,默认并不支持这个叫做esd的文件扩展名,因此需要在IIS管理控制台中添加这个扩展名,用于支持该类型文件的下载动作。
图 3缺少esd扩展名的IIS8.5
图 4使用添加功能,增加一个esd文件扩展名,MIME类型使用application/vnd.ms-cab-compressed 即可
最后在Win10 1803 客户机上再次更新,顺利开始下载操作,问题得到解决。
图 5使用嗅探工具了解到的esd文件下载情况,都已经是正常的200
问题总结:
1、由于esd属于新型文件扩展名,低于Win2016的系统是不存在于配置这个文件扩展名的,因此这个MIME类型是从Win2016的IIS10上复制出来的。
2、官方在Win2012R2的KB 3159706中有提到关于ESD文件解密的操作,其中需要安装众多补丁来支持,本例涉及到的服务器恰巧没有安装这些补丁,后续可以参考这个KB 进行修补,但强烈建议更新到WSUS10,也就是对应的Win2016版的系统。
3、这种问题在服务端不会存在任何错误(但是会记录),所有的错误展示都来自于客户端(更直观),因此收集客户端日志是必要的操作。
-=EOB=-