預設來說,當新版本的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>
<object id="Xaml1" data="data:application/x-silverlight-2," type="application/x-silverlight-2"
width="100%" height="100%">
<%
string orgSourceValue = @"ClientBin/SilverlightApp.xap";
string param;
if (System.Diagnostics.Debugger.IsAttached)
param = "<param name=\"source\" value=\"" + orgSourceValue + "\" />";
else
{
string xappath = HttpContext.Current.Server.MapPath(@"") + @"\" + orgSourceValue;
DateTime xapCreationDate = System.IO.File.GetLastWriteTime(xappath);
param = "<param name=\"source\" value=\"" + orgSourceValue + "?ignore="
+ xapCreationDate.ToString() + "\" />";
}
Response.Write(param);
%>
<param name="onError" value="onSilverlightError" />
方法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&tid=14082&extra=" target="_blank">書籍下載下傳</a>
歡迎大家加入“專注Silverlight”QQ技術群,歡迎大家加入一起學習讨論Silverlight&WPF&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 ,如需轉載請自行聯系原作者