7

新しいバージョンが利用可能で、古いバージョンがまだブラウザーにキャッシュされている場合に、ブラウザーに .xap ファイルを強制的に再ダウンロードさせる方法を見つけようとしています。

別のスレッドを見たことがあります: Firefox に Silverlight XAP ファイルをキャッシュまたは再ダウンロードさせないようにするにはどうすればよいですか?

最善の解決策は次のようです。

protected void Page_Load(object sender, EventArgs e)
{
    var versionNumber = Assembly.GetExecutingAssembly().GetName().Version.ToString();
    this.myApp.Source += "?" + versionNumber;
}

ただし、 this.myApp 部分は取得できません。それはどのようなオブジェクトですか?これを再開して申し訳ありませんが、人々が完全な解決策を投稿してくれることを願っています.

ありがとう

4

3 に答える 3

8

あなたが見ているのはasp:SilverlightWeb サーバー コントロールに基づくコードですが、そのコントロールは Silverlight 3 以降で廃止されました。

次に、オブジェクト タグを直接使用するか、独自のサーバー コントロールをノックアップして、オブジェクト タグの設定をレンダリングします。

オブジェクトタグとしては、次のようになります:-

<form id="form1" runat="server" style="height:100%">
<div id="silverlightControlHost">
    <object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
      <param id="xapSource" runat="server" name="source" value="ClientBin/SilverlightApplication1.xap"/>
      <param name="onError" value="onSilverlightError" />
      <param name="background" value="white" />
      <param name="minRuntimeVersion" value="4.0.50303.0" />
      <param name="autoUpgrade" value="true" />
      <param name="initParams" id="initParams" runat="server" />
      <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=4.0.50303.0" style="text-decoration:none">
          <img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="Get Microsoft Silverlight" style="border-style:none"/>
      </a>
    </object><iframe id="_sl_historyFrame" style="visibility:hidden;height:0px;width:0px;border:0px"></iframe></div>
</form>

source パラメータの id と runat="server" に注意してください。その場所で、ページの読み込みは次のようになります:-

protected void Page_Load(object sender, EventArgs e)
{
    string xapPhysicalPath = Server.MapPath(xapSource.Attributes["value"]);
    DateTime lastWrite = System.IO.File.GetLastWriteTime(xapPhysicalPath);
    xapSource.Attributes["value"] = xapSource.Attributes["value"] + "?" + lastWrite.ToString("yyyyMMddThh:mm:ss");

}

これにより、xap が変更されたときに、ソースに使用される URL が常に変更されるようになります。遭遇した元のコードには、完全に接続されていないアセンブリのバージョン番号を変更せずに xap を変更する可能性があるという点で欠陥があります。

于 2011-05-13T12:15:32.343 に答える
1

現在の日時を xap に追加するだけで、毎回新しいものとして表示されるため、クライアントでのキャッシュはありません。

value="ClientBin/SilverlightApplication1.xap?<%=DateTime.Now%>"

お役に立てれば。

于 2012-04-12T14:54:42.470 に答える
0

myAppは、おそらくページ内のSilverlightオブジェクトをレンダリングするWebコントロールです。

Sourceプロパティを設定することにより、XAPを指すURLは、以前のバージョンとは異なるパラメーターを取得し、ブラウザーがキャッシュされたxap(このパラメーターに別の値が設定されている)を無効にします。

于 2011-05-13T12:03:55.373 に答える