天天看點

強制用戶端更新Silverlight XAP檔案方法彙總

預設來說,當新版本的Silverlight應用釋出時,浏覽器緩存會查詢本地是否已經存在同名XAP檔案,并進行簡單校驗,如果存在并且驗證相同,将忽略下載下傳更新最新版本XAP檔案。我們可以通過以下幾種方式,強制浏覽器更新下載下傳XAP檔案,

方法1. IIS設定方式

通過在設定IIS屬性,強制XAP檔案過期,使浏覽器将重新下載下傳XAP檔案,步驟如下:

- 打開IIS管理器;

- 打開“預設網站”, 然後找到部署的Silverlight項目;

- 在“ClientBin”目錄下找到XAP檔案;

- 進入XAP屬性頁面,然後選擇“HTTP Response Headers”;

- 在Actions欄,選擇“Set Common Headers...";

- 選擇”Expire Web Content - Immediately“, 然後儲存設定。

這樣設定後,每當頁面重新整理時将強制Web頁面内容過期,立即重新下載下傳最新的XAP檔案到本地。

方法2,動态方式強制更新 

所謂動态方式強制更新,其實每次部署時使用不同的XAP檔案名,浏覽器每次檢測到不同的檔案名,則将重新下載下傳XAP檔案。

這種方式有很多種實作方法,例如,可以手動添加一個XAP檔案參數,也可以動态生成一個随機參數,或者根據不同版本号綁定到XAP檔案名後等。

在下面執行個體代碼中,根據部署的日期不同,将日期字元串作為XAP檔案的參數,以此強制更新XAP檔案,

代碼修改靜态代碼”<param name="source" value="ClientBin/SilverlightApp.xap"/>“為動态代碼,當項目不是在Debug模式下,則生成新的XAP檔案路徑。

<a href="http://www.cnblogs.com/jv9/admin/EditPosts.aspx?opt=1"></a>

&lt;object id="Xaml1" data="data:application/x-silverlight-2," type="application/x-silverlight-2"

width="100%" height="100%"&gt;

&lt;%

string orgSourceValue = @"ClientBin/SilverlightApp.xap";

string param;

if (System.Diagnostics.Debugger.IsAttached)

param = "&lt;param name=\"source\" value=\"" + orgSourceValue + "\" /&gt;";

else

{

string xappath = HttpContext.Current.Server.MapPath(@"") + @"\" + orgSourceValue;

DateTime xapCreationDate = System.IO.File.GetLastWriteTime(xappath);

param = "&lt;param name=\"source\" value=\"" + orgSourceValue + "?ignore="

+ xapCreationDate.ToString() + "\" /&gt;";

}

Response.Write(param);

%&gt;

&lt;param name="onError" value="onSilverlightError" /&gt;

方法3, 本地自動生成版本号強制更新XAP檔案

該方法由網友”菩提樹下的楊過“提出,作者建立簡單本地應用,使用本地應用生成不同的XAP檔案名參數,其原理與方法2相同,實作方法不同。

如果您有更好的方法和建議,歡迎留言讨論。

推薦Silverlight 5書籍:

Beginning Silverlight 5 in C#, Silverlight5入門級書籍,該書詳細介紹Silverlight 5開發基礎,由淺入深的介紹Silverlight 5新功能。

适合Silverlight入門閱讀。

<a href="http://bbs.silverlightchina.net/forum.php?mod=viewthread&amp;tid=14082&amp;extra=" target="_blank">書籍下載下傳</a>

歡迎大家加入“專注Silverlight”QQ技術群,歡迎大家加入一起學習讨論Silverlight&amp;WPF&amp;Widnows Phone開發技術。 

22308706(一群) 超級群500人 

37891947(二群) 超級群500人 

100844510(三群) 進階群200人 

32679922(四群) 超級群500人 

23413513(五群) 進階群200人 

32679955(六群) 超級群500人 

88585140(八群) 超級群500人 

128043302(九群 企業應用開發推薦群) 進階群200人 

101364438(十群) 超級群500人 

68435160(十一群 企業應用開發推薦群)超級群500人

 51CTO部落格,原文連結:http://blog.51cto.com/kevinfan/933181 ,如需轉載請自行聯系原作者

繼續閱讀