Silverlight:如何强制浏览器下载更新的客户端版本?

Bud*_*dda 7 .net asp.net silverlight

我的Silverlight(4.0)应用程序(由ASP.NET网站托管)使用4个项目,它们都使用一个带有程序集版本的文件:

[assembly: AssemblyVersion("1.0.*")]
Run Code Online (Sandbox Code Playgroud)

当前显示的应用程序的版本是1.0.3842.38865,但是较新的应用程序(1.0.3854.42448)最近上传到服务器.

问题是浏览器在部署到服务器后不会加载新的Silverlight应用程序.

这是一个HTML代码,用于"渲染"silverlight-html-loader(不确定它是否是正确的名称):

<div id="silverlightControlHost" style="height:950px"> 
<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%"> 
  <param name="source" value="/ClientBin/VfmElitaSilverlightClientApplication.xap"/> 
  <param name="onError" value="onSilverlightError" /> 
  <param name="background" value="white" /> 
  <param name="initParams" value="adr=squad,team=811,match=3217203" /> 
  <param name="minRuntimeVersion" value="3.0.40624.0" /> 
  <param name="autoUpgrade" value="true" /> 
  <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=3.0.40624.0" style="text-decoration:none"> 
      <img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style:none"/> 
  </a> 
</object> 
<iframe id="_sl_historyFrame" style="visibility:hidden;height:0px;width:0px;border:0px"></iframe> 
Run Code Online (Sandbox Code Playgroud)

我试图在包含上次XAP文件修改时间的对象的"source"参数中添加一个参数:

  <param name="source" value="/ClientBin/VfmElitaSilverlightClientApplication.xap?Ver=2010072243523AM"/>
Run Code Online (Sandbox Code Playgroud)

这导致Silverlight应用程序加载错误:

Silverlight应用程序代码中未处理的错误:2103类别:InitializeError消息:应用程序无效或格式错误:检查清单

你能否告诉我如何强制浏览器从服务器获取新的应用程序(没有浏览器缓存操作,我想保留浏览器缓存选项)?

非常感谢你!

PS有必要添加silverlight应用程序在我的localhost上工作(上传和启动)没有任何参数跳舞.只有当我将其上传到网站时 - 它才会被浏览器重新加载.并在xap文件路径中添加其他参数 - 对localhost无效.

Kel*_*sey 2

这应该按预期工作,也许它与您附加参数的方式有关。尝试删除该Ver=部分:

<param name="source"
    value="/ClientBin/VfmElitaSilverlightClientApplication.xap?2010072243523AM"/> 
Run Code Online (Sandbox Code Playgroud)

我过去曾使用过这种方法,它是绕过任何客户端缓存的最佳方法。

如果您希望它始终刷新并且从不缓存,您可以将当前添加DateTime到末尾,这也将始终是唯一的。不确定您何时想在现实场景中执行此操作,但它非常适合测试以确保您永远不会运行缓存版本。例如:

<param name="source"
    value="/ClientBin/VfmElitaSilverlightClientApplication.xap?<%= DateTime.Now.Ticks.ToString() "/>
Run Code Online (Sandbox Code Playgroud)

如果这不起作用,只需将其全部删除,不要添加到末尾,然后查看它是否加载。我有一种感觉,该错误是其他原因,因为它并不真正适用于 xap 文件的位置。