2

負荷分散された実稼働環境にデプロイされた Siverlight アプリケーションがあります。このアプリケーションは、'CheckAndDownloadUpdateAsync' メソッドを使用して、更新プログラムを自動的にチェックしてダウンロードします。

この方法は問題なく機能し、アプリケーションの最新バージョンは問題なくダウンロードされました。

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

しかし、突然、メソッドの動作がおかしくなり始めました。運用サーバーに新しい展開がなかった後でも、アプリケーションをダウンロードし続けます。最新のアプリケーションをダウンロードした後でも、常に e.UpdateAvailable = true を取得します。

4

1 に答える 1

0

Ok。最終的に問題を発見しました (4 か月後 :( )。幸いなことに、ISS 関連の (アプリケーション プール) 設定とは関係ありませんでした。

理由:- すべてのファイルは作成日と変更日を持っています。それで、私たちのXAPファイル。以前は、アプリケーションを圧縮してこの ZIP ファイルをサーバーにコピーし、必要なフォルダーに展開することでアプリケーションをデプロイしていました。

すべての圧縮ソフトウェアの抽出ロジックに問題がありました (WinZip、Windows Server の既定の [すべて抽出...]、7 Zip などを含む)。XAP ファイルが抽出されたとき、サーバーの現地時間に従って変換された日付の変更が必要です。私たちのサーバーは CST 時間だったので、時間を CST に変換したはずです。ただし、それは行われず、ローカルの IST 時間として保持されました。たとえば、IST マシンでのビルド時間が 12.30 PM (IST) の場合、圧縮して抽出すると、時刻が「12.30 PM (CST)」と表示されていましたが、-6.00 UMT に変換され、「1.00 AM (CST)」と表示されるはずでした。 '。

したがって、Silverlight が「更新の確認」要求を送信するたびに、その要求は、XAP ファイルの「更新日時」よりも古いローカル IST 時間であったため、IST の日付/時間まで何度も何度もアプリケーションをダウンロードしていました。 CST 時間と一致または交差する場合は、次の 11 時 30 分に問題が発生したことを意味します。

上記の CheckAndUpdateAsync() メソッドを使用した「自動アップグレード」でも問題が発生している場合は、XAP ファイルの作成日と変更日を忘れずに確認してください。お役に立てれば!ありがとう。

于 2012-12-16T15:03:58.793 に答える