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

前端之家收集整理的这篇文章主要介绍了.net – Silverlight:如何强制浏览器下载更新的客户端版本?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的Silverlight(4.0)应用程序(由ASP.NET网站托管)使用4个项目,它们都使用一个文件和程序集版本:

[assembly: AssemblyVersion("1.0.*")]

当前显示的应用程序版本为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>

 

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

<param name="source" value="/ClientBin/VfmElitaSilverlightClientApplication.xap?Ver=2010072243523AM"/>

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

Unhandled Error in Silverlight
Application Code: 2103 Category:
InitializeError Message:
Invalid or malformed application:
Check manifest

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

非常感谢你!

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

解决方法

我们目前使用的是以下内容,它获取.xap文件的最后写入时间并将其附加到source-param:

<object ... >
        <%
            var source = "ClientBin/App.xap";
            string param;
            if (System.Diagnostics.Debugger.IsAttached)
                param = string.Format("<param name=\"source\" value=\"{0}\" />",source);
            else
            {
                var path = HttpContext.Current.Server.MapPath(string.Empty) + "\\" + source;
                var xapCreatedAt = System.IO.File.GetLastWriteTime(path);
                param = string.Format("<param name=\"source\" value=\"{0}?version={1}\" />",source,xapCreatedAt.ToString("yyyyMMddTHHmmssfff"));
            }
            Response.Write(param);
        %>
        <param ...

猜你在找的Silverlight相关文章