2

我们在负载均衡的生产环境中部署了 Silverlight 应用程序。此应用程序使用“CheckAndDownloadUpdateAsync”方法自动检查和下载更新。

此方法运行良好,并且下载了最新版本的应用程序,没有任何问题。

App.Current.CheckAndDownloadUpdateCompleted += new CheckAndDownloadUpdateCompletedEventHandler(App_CheckAndDownloadUpdateCompleted);

但是,突然之间,该方法开始表现得很奇怪。即使在生产服务器上没有新的部署,它也会继续下载应用程序。即使它本身下载了最新的应用程序,我也会一直得到 e.UpdateAvailable = true 。

4

1 回答 1

0

行。我们终于找到了问题(4 个月后 :( ),幸运的是它与任何 ISS 相关(应用程序池)设置无关。

原因:- 每个文件的创建日期和修改日期。所以,我们的 XAP 文件。我们曾经通过压缩应用程序并将此 ZIP 文件复制到我们的服务器上来部署应用程序,然后解压缩到所需的文件夹。

所有压缩软件的提取逻辑都存在问题(包括 WinZip、Windows 服务器默认的“全部提取...”、7 Zip 等...)。当 XAP 文件被提取时,它应该根据服务器的本地时间转换其修改日期。由于我们的服务器处于 CST 时间,因此它应该已将时间转换为 CST。但是,它没有,并将其保留为本地 IST 时间。例如,如果 IST 机器上的构建时间是 12.30 PM (IST),则压缩并提取它以将时间显示为“12.30 PM (CST)”,它应该将其转换为 -6.00 UMT 并显示为“1.00 AM (CST)” '。

因此,每当 silverlight 发送“检查更新”请求时,该请求是在本地 IST 时间,该时间过去比 XAP 文件上的“修改开启”时间更早,因此它用于一次又一次地下载应用程序直到 IST 日期/时间匹配或超过 CST 时间意味着问题在接下来的 11.30 小时内发生。

如果您在使用上述 CheckAndUpdateAsync() 方法时也遇到“自动升级”问题,请不要忘记关注 XAP 文件的创建日期和修改日期。希望这可以帮助!谢谢。

于 2012-12-16T15:03:58.793 回答