Silverlightコントロールをパッケージ化してSharePointWebパーツに展開しています。アップデートをプッシュした後、ブラウザが新しいバージョンのコントロールをロードするのに問題があります。 xapプロジェクトのアセンブリとファイルのバージョンを更新していますが、問題ではないようです。ブラウザに新しいxapをロードさせる唯一の方法は、インターネット一時ファイルにアクセスして削除することです。私にとって、開発中は問題ありませんが、本番環境になる前に解決策を見つける必要があります。何か案は?
これは、ブラウザがリソースリクエストを処理する方法と関係があります。 Flashにも同様の問題があり、いくつかの回避策があります。
これが 記事 で、問題と考えられる解決策について詳しく説明しています。
私はこのようなことをすることを提案します:
あなたのhtmlのあなたのxapのためにこれを持っているとしましょう:
<param name="source" value="ClientBin/myApp.xap"/>
私はそれをバージョン管理するので、プッシュを行うたびにバージョン番号を変更します。例:
<param name="source" value="ClientBin/myApp.xap?ver=1"/>
.XAPキャッシュに遭遇することは非常に珍しいことではありません。つまり、Silverlightアプリケーションの新しいバージョンを展開するたびに、ブラウザーは更新された.XAPファイルをダウンロードしません。
1つの解決策は、IISプロパティを変更することです。次の手順に従って、.XAPファイルの[コンテンツの有効期限HTTPヘッダーを有効にする]オプションをオンにすることができます。
Open IIS Manager
Go to “Default Web Site” and find web site for your Silverlight project.
Find the .XAP file under ClientBin.
Go to the properties page of the .XAP file, on HTTP Headers Tab, Turn on “Enable Content Expiration”, click the “Expire Immediately” radio button.
Save the changes.
このようにして、ブラウザを閉じなくてもページを更新すると、最新の.XAP(最新の.XAPファイルがある場合のみ)がダウンロードされます。
お役に立てれば!
すごい! WindowsPhoneの開発でも機能しました。
私は次のように述べています。
NavigationService.Navigate(new Uri("/Game.xaml?versao="+version, UriKind.RelativeOrAbsolute));
次に、メソッドOnNavigatedTo
をオーバーライドします。
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
base.OnNavigatedTo(e);
string var;
if (NavigationContext.QueryString.TryGetValue("version", out var))
{
...
}
}
次のweb.configをClientBinに入れます
<configuration>
<system.webServer>
<staticContent>
<clientCache cacheControlMaxAge="0.00:00:01" cacheControlMode="UseMaxAge"/>
</staticContent>
</system.webServer>
</configuration>
ここや他の投稿で言及されている解決策は、一貫して私を助けませんでした。最後に行ったのは、.xapファイルと.svcファイルをリリースビルドからそれぞれClientBinフォルダーとServiceデプロイメントフォルダーに手動でコピーすることでした。