自动更新 – Silverlight 5 – 使用反缓存技巧时OOB安装更新中断

自动更新 – Silverlight 5 – 使用反缓存技巧时OOB安装更新中断,第1张

概述我在Silverlight< object>上使用时间戳技巧(使用Silverlight 4成功地使用 How do you force Firefox to not cache or re-download a Silverlight XAP file?中的答案查看GetLastWriteTime()). 使用Silverlight 5运行时*,OOB安装/自动更新功能现在似乎已被破坏.我有两个 我在Silverlight< object>上使用时间戳技巧(使用Silverlight 4成功地使用 How do you force Firefox to not cache or re-download a Silverlight XAP file?中的答案查看GetLastWriteTime()).

使用Silverlight 5运行时*,OOB安装/自动更新功能现在似乎已被破坏.我有两个问题:

>在浏览器中启动时,当前安装状态始终为“未安装”(在代码中:Application.Current.InstallState == System.windows.InstallState.notinstalled始终为true)
>在OOB模式下启动时,总​​是说新版本可用(代码中:CheckAndDownloadUpdateAsync()始终返回e.Error == null和e.UpdateAvailable == true).

有没有其他人遇到这个,更好的是,有一个解决方法?

*精确度:目前我的应用程序是使用Silverlight 5工具构建的,但目标是Silverlight 4,并且在Silverlight 4 Developer Runtime上运行良好.问题发生在(至少)我的开发机器上使用Silverlight 5 Developer Runtime.

更新:我已经与fiddler核实了我的开发箱上发生了什么.调用更新过程时,我看到:

GET /ClIEntBin/ClIEnt.xap?timestamp=23%2f01%2f2012+17%3a42%3a14 http/1.1If-ModifIEd-Since: Tue,24 Jan 2012 09:10:07 GMT

这对我来说很好,除了服务器(服务器:ASP.NET开发服务器/ 10.0.0.0,X-AspNet-版本:4.0.30319)返回一个新版本,具有以下缓存头:

http/1.1 200 OKCache-Control: privateDate: Tue,24 Jan 2012 09:11:28 GMT

每次运行应用程序时,检查请求都有正确的日期(服务器先前返回的日期),每次服务器都说它有一个新版本,并带有当前日期.我将尝试调整服务器配置.

Update2:我的Web.config文件中有一个缓存控制指令,但删除它只解决了一半的问题.现在,浏览器应用程序检测到OOB安装正常,但更新周期继续,具有相同的fiddler跟踪.

Update3:问题肯定与调试Web服务器有关.使用相同的Web.config部署到适当的IIS的相同应用程序没有此问题.但这仍然很烦人,因为它大大减慢了我的OOB调试过程.

Update4:事实上,即使在我的主要IIS部署上,问题仍然存在,并且也发生在其他服务器上(并使用PHP生成时间戳而不是ASP.NET).所以任何帮助都表示赞赏.

Update5:根据要求,这是我的代码,相当简单:

private voID CheckAndDownloadUpdateCompleted(object sender,System.windows.CheckAndDownloadUpdateCompletedEventArgs e){    if (e.Error != null)    {        if (e.Error is PlatformNotSupportedException)        {            UpdateType = UpdateTypes.PlatformUpdate;            //(...)            return;        }        else if (e.Error is SecurityException)        {            UpdateType = UpdateTypes.Elevationrequired;            //(...)            return;        }        else        {            // Error handling code            //(...)        }    }    else if (e.UpdateAvailable)    {        UpdateType = UpdateTypes.Available;        //(...)        return;    }    UpdateType = UpdateTypes.NoUpdate;    //(...)}

UpdateType是一个枚举类型属性,允许我在其他地方选择正确的本地化字符串.

Update6:各种//(…)部分(间接)更改应用程序的视图,UpdateType不是.

解决方法 我怀疑这与内置的Cassini / Visual Studio开发服务器有关,而SL5由于某种原因不能很好地协同工作.

我也在使用你提到的反缓存技巧,我遇到了同样的行为,Application.Current.InstallState总是报告notinstalled以及CheckAndDownloadUpdateAsync()总是报告e.UpdateAvailable = true.

因此,我将Web项目配置更改为使用IIS Express而不是内置的Visual Studio Development服务器,并将Silverlight应用程序重新安装到桌面.最后,一切都按预期开始工作.按顺序说明Application.Current.InstallState = Installed和CheckAndDownloadUpdateAsync()报告e.UpdatedAvailable = false.

更新:

抱歉,没有看到您在实时IIS部署中遇到此问题.

更新2:

我的反缓存HTML请求:

<div ID="silverlightControlHost" align="center" >    <object data="data:application/x-silverlight-2," type="application/x-silverlight2" wIDth="100%" height="100%">      <%          string source = @"~/ClIEntBin/EskomVDT.SL.xap";          string param;          if(System.Diagnostics.DeBUGger.IsAttached) {              param = "<param name=\"source\" value=\"" + VirtualPathUtility.Toabsolute(source) + "\" />";                                             }          else {              string xapPath = httpContext.Current.Server.MapPath(source);              DateTime xapCreationDate = System.IO.file.GetLastWriteTime(xapPath);              param = "<param name=\"source\" value=\"" + VirtualPathUtility.Toabsolute(source) + "?ignore=" + xapCreationDate.ToString("yyyy-MM-dd-hh-mm-ss") + "\" />";          }          Response.Write(param);      %>      <param name="onError" value="onSilverlightError" />      <param name="background" value="white" />      <param name="minRuntimeVersion" value="5.0.61118.0" />      <param name="autoUpgrade" value="true" />      <a href="http://go.microsoft.com/fwlink/?linkID=149156&v=5.0.61118.0" >          <img src="http://go.microsoft.com/fwlink/?linkID=161376" alt="Get Microsoft Silverlight" />      </a>      </object><iframe ID="_sl_historyFrame" ></iframe></div>
总结

以上是内存溢出为你收集整理的自动更新 – Silverlight 5 – 使用反缓存技巧时OOB安装/更新中断全部内容,希望文章能够帮你解决自动更新 – Silverlight 5 – 使用反缓存技巧时OOB安装/更新中断所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1003522.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存