像大多数的项目一样,即使在将Silverlight应用程序交付后,我们仍会根据客户的需求进行相应修改并将xap文件发送给客户,客户经过测试后再部署到生产环境。

这样经常会面临一个问题,客户更新xap后并未看到任何变化甚至由于我们wcf服务等相关文件的改动会让程序执行发生异常。这个原因倒是很明显--我们的xap文件被缓存了,当服务器上替换了新的xap文件时,本地并未重新从服务器上下载。这时候我们当然就要告知客户如何清理缓存等等,再碰到个电脑盲(大多情况下)更是苦不堪言。客户抱怨,项目经理哑巴吃黄连…

那么有没有一种方法可以解决上面提到的问题呢?当然,且听分解。

我们先看一段在html中签入Silverlight应用的标准代码示例

        <object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%"><param name="source" value="ClientBin/MefSample.xap"/><param name="onError" value="onSilverlightError" /><param name="background" value="white" /><param name="minRuntimeVersion" value="4.0.50826.0" /><param name="autoUpgrade" value="true" /><a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=4.0.50826.0" style="text-decoration:none"><img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="Get Microsoft Silverlight" style="border-style:none"/></a></object>

注意下面这行,我们就要从这里下手。

<param name="source" value="ClientBin/MefSample.xap"/>

我们知道,要防止浏览器自动缓存文件,经常用的一个做法就是在要加载的文件名后面加入一个随机字符串(比如验证码的刷新),如Guid、DateTime.Now.Ticks一类。

因此我们这里的思路就是通过判断xap文件的生成时间而决定是否重新载入xap包。

最终View的全部代码如下:

<object data="data:application/x-silverlight-2," type="application/x-silverlight-2"width="100%" height="100%">@{
        string xapFile = "ClientBin/MefSample.xap";string xapPath = HttpContext.Current.Server.MapPath("\\") + xapFile;DateTime xapCreatedDate = System.IO.File.GetLastWriteTime(xapPath);xapFile += "?v=" + xapCreatedDate;}
    <param name="source" value="@xapFile" /><param name="onError" value="onSilverlightError" /><param name="background" value="white" /><param name="minRuntimeVersion" value="4.0.50826.0" /><param name="autoUpgrade" value="true" /><a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=4.0.50826.0" style="text-decoration: none"><img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="Get Microsoft Silverlight"style="border-style: none" /></a>
</object>

注意,这里我是用ASP.NET MVC(Razor语法)承载xap,对WebForm或WebForm View同样适用,请自行更改。

转载于:https://www.cnblogs.com/allanli/archive/2011/01/07/1929722.html

(转)Silverlight 巧用文件生成时间强制客户端载入最新xap文件相关推荐

  1. 查看linux文件生成时间,【linux】如何查看文件的创建、修改时间

    本篇博文旨在介绍Linux下查看文件时间的方法:并介绍如何使用touch指令来进行文件时间的创建以及修改 如何查看文件的时间信息 利用stat指令查看文件信息 三种时间的介绍 ATime --文件的最 ...

  2. linux查找文件限制时间,Linux查找命令find与文件三种时间

    Linux中查找命令如下: Which 查看可执行文件的位置. whereis 查看文件的位置. locate 配合数据库查看文件位置. Find 实际搜寻硬盘查询文件名称. 其中find的功能很强大 ...

  3. 微信文件撤回时间多长_微信中文件撤回时间延长至多久?

    微信中文件撤回时间延长至3个小时.若微信版本为7.0.10及以上,可以在3个小时内操作撤回文件(Word.Excel.PPT等文档). [] 新功能:微信文档类消息的撤回时间变成了 3小时 为什么会有 ...

  4. php只显示指定文件类型_php强制下载指定类型的文件

    当需要将文件直接下载时,可以使用如下的函数来实现. 代码: 复制代码 代码示例: function downloadFile($file){ $file_name = $file; $mime = ' ...

  5. 生成pfx文件需要在服务器上执行,PEM文件和private.key文件生成IIS服务器所需的pfx文件(配置SSL用)...

    第一步:输入域名,点击"创建免费的SSL证书"按钮,如图 第二步:输入邮箱,点击创建,如图 创建成功后,需要进行dns验证,结果图如下: 第三步:在域名所在的云服务器上,添加域名解 ...

  6. matlab (.m)文件生成 windows 可执行(.exe)文件

    mex -setup:设置 C 语言编译器:(如果本地安装有 visual studio 20xx 集成开发环境,则会自动选择其下的 C/C++ 编译器 ) 将运行时环境(runtime enviro ...

  7. c语言 获取文件修改时间,C语言中用于修改文件的存取时间的函数使用

    C语言utime()函数:修改文件的存取时间和更改时间头文件: #include #include 定义函数: int utime(const char * filename, struct utim ...

  8. PEM文件和private.key文件生成Tomcat服务器所需的jks文件(配置SSL用)

    在工作中时长会遇到配置https,我使用的是Tomcat服务器,tomcat服务器一般使用的.jks文件配置SSL加密.但是,https供应商不会直接提供.jks文件.所以,我们就需要将加密文件转换成 ...

  9. cmd 根据xsd文件生成webservice java客户端代码

    根据xsd 转换成java 对象, jdk1.7 自带 xjc 命令,可以根据xjc 命令直接转换成 java 对象 命令格式:xjc -d dir -p packgeName -verbose xx ...

  10. cmd命令生成webservice_根据wsdl文件生成WebService客户端代码

    有时候在项目中,一个项目可能有好几个公司在做.系统之间难免会出现互相调用接口的现象,这时候有一种办法就是使用webService.本篇文章将介绍如何将对接系统提供的WebService接口,根据对方提 ...

最新文章

  1. PHP大数组过滤元素、修改元素性能分析
  2. 《背包问题》 动态规划
  3. 分布式发布订阅消息系统Kafka单实例测试
  4. 【机器视觉】 throw算子
  5. 免 sudo 使用 docker
  6. PDFMate PDF Converter Pro
  7. Spring [CVE-2022-22965]漏洞处理
  8. 完整的WebApplication JSF EJB JPA JAAS –第1部分
  9. 转hdmi_苹果本轻松接大屏,毕亚兹雷电接口转HDMI/VGA转换器评测
  10. NeurIPS 2020 | 没有乘法的神经网络,照样起飞?
  11. C#.Net工作笔记005---c#中list合并去重_以及单纯合并_值类型list去重
  12. ISA Server 2004软件防火墙相关配置
  13. vue使用阿里巴巴矢量图标
  14. dw网页制作教程百度云盘_Dreamweaver网页制作教程
  15. Twaver-HTML5基础学习(13)连线(Link)连线的绑定与展开
  16. 台式计算机如何设置无线网络,台式电脑怎么设置无线网络
  17. 【DKN】(五)attention.py
  18. Windows10 64位 + caffe + Matlab -- cpu版本
  19. 画论56 恽格《南田画跋》
  20. Android性能优化之较精确的获取图像显示到屏幕上的时间

热门文章

  1. TOPcoder准备
  2. 隐马尔可夫模型(三): 算法分类、解决方法
  3. 王之泰201771010131《面向对象程序设计(java)》第四周学习总结
  4. 使用Python获取上市公司资讯,并进行判断利好利空消息(判断部分待更新)
  5. 【python】rank函数
  6. 未转变者服务器可作弊,未转变者作弊指令有哪些-未转变者作弊指令大全
  7. 老版本的linux内核中mtd test 出现 mtd_oobtest: error: verify failed at 0xXXXX 问题
  8. solr6.2从环境部署到与mysql整合到中文分词器到solrJ的使用
  9. python调用高德地图地理编码/逆地理编码
  10. acm会议什么档次_国际顶级会议期刊级别介绍