Silverlightコントロールをパッケージ化してSharePointWebパーツに展開しています。アップデートをプッシュした後、ブラウザが新しいバージョンのコントロールをロードするのに問題があります。xapプロジェクトのアセンブリとファイルのバージョンを更新していますが、問題ではないようです。ブラウザに新しいxapをロードさせる唯一の方法は、インターネット一時ファイルにアクセスして削除することです。私にとっては、開発中は問題ありませんが、本番環境になる前に解決策を見つける必要があります。何か案は?
5 に答える
これは、ブラウザがリソースリクエストを処理する方法と関係があります。Flashにも同様の問題があり、いくつかの回避策があります。
これは、問題と考えられる解決策について詳しく説明した記事です。
私はこのようなことをすることをお勧めします:
あなたがあなたのhtmlのあなたのxapのためにこれを持っているとしましょう:
<param name="source" value="ClientBin/myApp.xap"/>
私はそれをバージョン管理するので、プッシュを行うたびにバージョン番号を変更します。例:
<param name="source" value="ClientBin/myApp.xap?ver=1"/>
素晴らしい!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))
{
...
}
}
.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ファイルがある場合のみ)がダウンロードされます。
お役に立てれば!
次のweb.configをClientBinに入れます
<configuration>
<system.webServer>
<staticContent>
<clientCache cacheControlMaxAge="0.00:00:01" cacheControlMode="UseMaxAge"/>
</staticContent>
</system.webServer>
</configuration>
ここで言及された解決策や他の投稿は、一貫して私を助けませんでした。最後に、.xapファイルと.svcファイルをリリースビルドからClientBinフォルダーとServiceデプロイメントフォルダーにそれぞれ手動でコピーしました。