650) this.width=650;" alt="" src="http://www.bkjia.com/uploads/allimg/131228/130445I05-0.png" border="0" height="166" width="169" style="line-height: 1.8; background-color: rgb(255, 255, 255); color: rgb(51, 51, 51); font-family: Georgia, 'Times New Roman', Times, san-serif; font-size: 14px; text-align: left; border: 0px; " />
在Silverlight相關技術論壇經常會看到Silverlight部署後,用戶端無法更新本地XAP檔案,每次只能通過手動清理瀏覽器緩衝,用戶端才能正常訪問到最新版本的XAP檔案。本文將介紹幾種強制用戶端更新Silverlight XAP的方法。
預設來說,當新版本的Silverlight應用發布時,瀏覽器緩衝會查詢本地是否已經存在同名XAP檔案,並進行簡單校正,如果存在並且驗證相同,將忽略下載更新最新版本XAP檔案。我們可以通過以下幾種方式,強制瀏覽器更新下載XAP檔案,
方法1. IIS設定方式
通過在設定IIS屬性,強制XAP檔案到期,使瀏覽器將重新下載XAP檔案,步驟如下:
- 開啟IIS管理器;
- 開啟“預設網站”, 然後找到部署的Silverlight項目;
- 在“ClientBin”目錄下找到XAP檔案;
- 進入XAP屬性頁面,然後選擇“HTTP Response Headers”;
650) this.width=650;" alt="" src="http://www.bkjia.com/uploads/allimg/131228/1304452E1-1.jpg" height="101" width="93" style="border: 0px; " />
- 在Actions欄,選擇“Set Common Headers...";
650) this.width=650;" alt="" src="http://www.bkjia.com/uploads/allimg/131228/130445I60-2.jpg" height="66" width="204" style="border: 0px; " />
- 選擇”Expire Web Content - Immediately“, 然後儲存設定。
650) this.width=650;" alt="" src="http://www.bkjia.com/uploads/allimg/131228/130445F25-3.jpg" height="305" width="490" style="border: 0px; " />
這樣設定後,每當頁面重新整理時將強制Web頁面內容到期,立即重新下載最新的XAP檔案到本地。
方法2,動態方式強制更新
所謂動態方式強制更新,其實每次部署時使用不同的XAP檔案名稱,瀏覽器每次檢測到不同的檔案名稱,則將重新下載XAP檔案。
這種方式有很多種實現方法,例如,可以手動添加一個XAP檔案參數,也可以動態產生一個隨機參數,或者根據不同版本號碼綁定到XAP檔案名稱後等。
在下面執行個體代碼中,根據部署的日期不同,將日期文字作為XAP檔案的參數,以此強制更新XAP檔案,
代碼修改靜態代碼”<param name="source" value="ClientBin/SilverlightApp.xap"/>“為動態代碼,當項目不是在Debug模式下,則產生新的XAP檔案路徑。
650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131228/130445C64-4.gif" alt="複製代碼" style="border: 0px rgb(221, 221, 221); " /><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" />650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131228/130445C64-4.gif" alt="複製代碼" style="border: 0px rgb(221, 221, 221); " />
方法3, 本地自動產生版本號碼強制更新XAP檔案
該方法由網友”菩提樹下的楊過“提出,作者建立簡單本地應用,使用本地應用產生不同的XAP檔案名稱參數,其原理與方法2相同,實現方法不同。
詳細請看教程 ”Silverlight:xap包(或本機快取)下載版本更新的解決思路“。
如果您有更好的方法和建議,歡迎留言討論。
推薦Silverlight 5書籍:
650) this.width=650;" border="0" alt="" src="http://www.bkjia.com/uploads/allimg/131228/1304452121-6.jpg" width="245" height="300" style="border: 0px; margin: 0px; padding: 0px; cursor: pointer; " />
650) this.width=650;" border="0" alt="" src="http://www.bkjia.com/uploads/allimg/131228/1304454N0-7.jpg" width="385" height="374" style="border: 0px; margin: 0px; padding: 0px; cursor: pointer; " />
Beginning Silverlight 5 in C#, Silverlight5入門級書籍,該書詳細介紹Silverlight 5開發基礎,由淺入深的介紹Silverlight 5新功能。
適合Silverlight入門閱讀。
書籍下載
歡迎大家加入“專註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人
本文出自 “Kevin Fan” 部落格,請務必保留此出處http://kevinfan.blog.51cto.com/1037293/933181