强制客户端更新Silverlight XAP文件方法汇总

Silverlight相关技术论坛经常会看到Silverlight部署后,客户端无法更新本地XAP文件,每次只能通过手动清理浏览器缓存,客户端才能正常访问到最新版本的XAP文件。本文将介绍几种强制客户端更新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文件,

代码修改静态代码”<paramname="source"value="ClientBin/SilverlightApp.xap"/>“为动态代码,当项目不是在Debug模式下,则生成新的XAP文件路径。

复制代码
< 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
= " <paramname=\ " source \ " value=\""+orgSourceValue+ " \ " /> " ;
else
{
string xappath = HttpContext.Current.Server.MapPath(@ "" ) + @ " \ " + orgSourceValue;
DateTimexapCreationDate
= System.IO.File.GetLastWriteTime(xappath);
param
= " <paramname=\ " source \ " value=\""+orgSourceValue+ " ?ignore = "
+ xapCreationDate.ToString() + " \ " /> " ;
}
Response.Write(param);
%>
< param name ="onError" value ="onSilverlightError" />
复制代码


方法3, 本地自动生成版本号强制更新XAP文件

该方法由网友”菩提树下的杨过“提出,作者创建简单本地应用,使用本地应用生成不同的XAP文件名参数,其原理与方法2相同,实现方法不同。

详细请看教程 ”Silverlight:xap包(或本地缓存)下载版本更新的解决思路“。

如果您有更好的方法和建议,欢迎留言讨论。

推荐Silverlight 5书籍:



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人
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值