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无效.
这应该按预期工作,也许它与您附加参数的方式有关。尝试删除该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 文件的位置。