从 Visual Studio 部署 silverligth 网页不会更新缓存

本文关键字:更新 缓存 网页 silverligth Visual Studio 部署 | 更新日期: 2023-09-27 18:34:40

这已经困扰了我一段时间了,我似乎无法弄清楚如何解决它。

我有一个在Visual studio 2012 Update 3中开发的silverlight业务应用程序。我有一个部署项目,它使用文件共享将解决方案文件部署到 IIS 所在的文件服务器。

但是,部署后,当我尝试在Internet Explorer(以及Firefox(中打开页面时,我得到了旧页面。我认为这可能与缓存在本地计算机上某处的 silverlight 应用程序有关。有谁知道这个缓存的位置,是否可以清空它?

我尝试使用互联网选项 -> Genereal -> 浏览历史记录 -> 删除清空网络浏览器缓存,但这似乎没有帮助。

我注意到,第一次导航到 silverlight 网页时,它的加载时间会更长一些,您可以看到 silverlight 加载符号。这是我导航到已发布页面时无法获得的内容。

人们会认为 silverlight 应用程序会检测新版本是否可用并抛弃旧版本。

对此有什么想法吗?

从 Visual Studio 部署 silverligth 网页不会更新缓存

这个问题已经在许多其他 SO 帖子和许多其他网站上讨论过,但我最喜欢的解决方案在本博客(和其他博客(中进行了讨论 避免错误缓存 silverlight-xap-file

它同时具有 C# 和 VB 版本的代码。 基本上,您可以更改承载 XAP 的网页,以向传递给浏览器的名称添加日期。这样,每次 XAP 更改时,浏览器都知道它是不同的 XAP 并下载它。

对于后代,这是该链接所说的:

下面的代码将 Silverlight 应用程序 XAP 文件的上次写入文件日期追加到 Silverlight 对象标记的源参数中的路径。 这将确保 Web 浏览器和代理服务器构造不佳的缓存功能不会错误地使用 XAP 文件的旧错误版本。 但是,它仍然允许这些缓存工作。此外,执行检查以避免在调试期间更改 XAP 文件路径,这是为了允许调试工具(如 Silverlight Spy(继续运行。

C#

<object id="Xaml1" data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
<%––<param name="source" value="ClientBin/SilverlightApp.xap"/>––%>
<%
  string orgSourceValue = @"ClientBin/SilverlightApp.xap";
  string param;
  if (System.Diagnostics.Debugger.IsAttached)
    param = "<param name='"source'" value='"" + orgSourceValue + "'" />";
  else
  {
    string xappath = HttpContext.Current.Server.MapPath(@"") + @"'" + orgSourceValue;
    DateTime xapCreationDate = System.IO.File.GetLastWriteTime(xappath);
    param = "<param name='"source'" value='"" + orgSourceValue + "?ignore=" + xapCreationDate.ToString() + "'" />";
  }
  Response.Write(param);
%>
<param name="onError" value="onSilverlightError" /> 

.VB

<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
  <%--<param name="source" value="SpecialEntityMaint.xap"/>--%>
    <%
      Dim orgSourceValue As String = "SpecialEntityMaint.xap"
      Dim param As String
      If (System.Diagnostics.Debugger.IsAttached) Then
        param = "<param name=""source"" value=""" + orgSourceValue + """ />"
      Else
        Dim xappath As String = HttpContext.Current.Server.MapPath("") + "'" + orgSourceValue
        Dim xapCreationDate As DateTime = System.IO.File.GetLastWriteTime(xappath)
        param = "<param name=""source"" value=""" + orgSourceValue + "?ignore=" + xapCreationDate.ToString() + """ />"
      End If
      Response.Write(param)
    %>
    <param name="onError" value="onSilverlightError" />