我们在负载均衡的生产环境中部署了Siverlight应用程序。此应用程序使用“CheckAndDownloadUpdateAsync”方法自动检查和下载更新。
此方法运行正常,下载的最新版本的应用程序没有任何问题。
App.Current.CheckAndDownloadUpdateCompleted += new CheckAndDownloadUpdateCompletedEventHandler(App_CheckAndDownloadUpdateCompleted);
但是,突然间这种方法开始表现得非常奇怪。即使在生产服务器上没有新部署之后,它也会继续下载应用程序。 即使它本身下载了最新的应用程序,我也会一直得到e.UpdateAvailable = true。
答案 0 :(得分:0)
确定。我们最终发现了这个问题(4个月后:(),幸运的是它与任何ISS相关(应用程序池)设置无关。
原因: - 每个文件都创建于&修改日期。那么,我们的XAP文件。 我们曾经通过Zipping来部署应用程序并将此ZIP文件复制到我们的服务器上,然后解压缩到所需的文件夹。
所有压缩软件的提取逻辑都存在问题(包括WinZip,Windows Servers默认'Extract All ...',7 Zip等...)。 提取XAP文件时,应根据服务器的本地时间转换其修改日期。由于我们的服务器处于CST时间,因此它应该将时间转换为CST。但是,它并没有将其保留为当地的IST时间。 例如如果在IST机器上的建造时间是下午12点30分(IST),则压缩和提取它用于显示时间为'12 .30 PM(CST)',它应该将其转换为-6.00 UMT并显示为'1.00 AM(CST)'
因此,每当silverlight发送“检查更新”请求时,请求都是在本地IST时间,该时间比XAP文件上的“已修改时间”早,因此它一次又一次地下载应用程序直到IST日期/时间匹配或交叉CST时间意味着问题发生在接下来的11.30小时。
如果您在使用上述CheckAndUpdateAsync()方法时遇到“自动升级”问题,请不要忘记密切关注XAP文件的创建&修改日期。希望这可以帮助!感谢。