web-dev-qa-db-ja.com

更新後にブラウザーにSilverlightxapの再読み込みを強制する

Silverlightコントロールをパッケージ化してSharePointWebパーツに展開しています。アップデートをプッシュした後、ブラウザが新しいバージョンのコントロールをロードするのに問題があります。 xapプロジェクトのアセンブリとファイルのバージョンを更新していますが、問題ではないようです。ブラウザに新しいxapをロードさせる唯一の方法は、インターネット一時ファイルにアクセスして削除することです。私にとって、開発中は問題ありませんが、本番環境になる前に解決策を見つける必要があります。何か案は?

30
Chris Stewart

これは、ブラウザがリソースリクエストを処理する方法と関係があります。 Flashにも同様の問題があり、いくつかの回避策があります。

これが 記事 で、問題と考えられる解決策について詳しく説明しています。

私はこのようなことをすることを提案します:

あなたのhtmlのあなたのxapのためにこれを持っているとしましょう:

<param name="source" value="ClientBin/myApp.xap"/>

私はそれをバージョン管理するので、プッシュを行うたびにバージョン番号を変更します。例:

<param name="source" value="ClientBin/myApp.xap?ver=1"/>
38
Joseph

.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ファイルがある場合のみ)がダウンロードされます。

お役に立てれば!

2
Haidar Abbas

すごい! 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))
    {
        ...
    }
}
2
Dayana Viana

次のweb.configをClientBinに入れます

<configuration>
  <system.webServer>
    <staticContent>
      <clientCache cacheControlMaxAge="0.00:00:01" cacheControlMode="UseMaxAge"/>
    </staticContent>
  </system.webServer>
</configuration>
1
avestnik

ここや他の投稿で言及されている解決策は、一貫して私を助けませんでした。最後に行ったのは、.xapファイルと.svcファイルをリリースビルドからそれぞれClientBinフォルダーとServiceデプロイメントフォルダーに手動でコピーすることでした。

0
Veverke