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

标签 .net asp.net silverlight

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

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

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

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

这是用于“渲染”silverlight-html-loader 的 HTML 代码(不确定它是否是正确的名称):
<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 文件修改时间的对象的“源”参数添加一个参数:
  <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 应用程序可以在我的本地主机上正常工作(上传和启动),无需任何参数。只有当我将它上传到网站时 - 它不会被浏览器重新加载。并向 xap 文件路径添加其他参数 - 不适用于本地主机。

最佳答案

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

<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 ...

关于.net - Silverlight:如何强制浏览器下载更新的客户端版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3305927/

相关文章:

c# - 如何添加到 Listview 项目的特定列?

.net - GroupBy 中的内存节省

.net - Perfmon、PerfMonitor 和 PerfView

asp.net - IIS 8 上的 Blazor WebAssembly - 0x8007000d

asp.net - Azure 网站打开了 login.microsoftonline.com(使用你的工作或学校帐户登录)

silverlight - HTTP 请求的 Gzip 压缩

WCF RIA 服务部署问题

c# - 计算数组中的项目,除了等于 -1 的值

.net - 您将如何使用 DVCS(在我的例子中是 mercurial)来开发不同版本的 .NET 框架?

c# - 如何在网格单击时显示子窗口(使用 mvvm 方法)