【随】Silverlight请求服务的缓存文件问题

问题描述

用Silverlight和WCF做上传图片,结果图片上传一半就报了错,然后屏幕右下角弹出“磁盘空间不足”的警告,发现C盘竟然只剩下十几兆的空间了。刷新一下页面,C盘空间又恢复了原来的大小(1G左右)。

问题原因

经过一番检查,发现Silverlight在调用Web服务的时候,每个请求都会在系统盘生成临时文件(在Win7下,位置是C:\Users\用户名\AppData\Local\Temp\),临时文件以XCP做前缀,然后跟以一串4位数字,并且每个临时文件都是20M

image

而且只有当网站部署在IIS中通过IE内核的浏览器浏览时才会出现这种情况,非IE内核浏览器或者网站在VS中都不会生成相应的临时文件。

考虑20M和在ServiceReferences.ClientConfig中默认设置的

maxBufferSize="2147483647"  maxReceivedMessageSize="2147483647"

大小上是一致的,所以尝试改变了一下这两个数值(要求必须一致),但临时文件的大小并没有改变。

所以导致临时文件产生的根本原因并没有找到,而且怀疑这就是Silverlight的一个Bug……平视没有注意到是因为请求不频繁,而且临时文件会在一定时间后自动清除,但由于图片上传将图片分成了很多小份,每一份都会调用一次服务,而原有的临时文件又没有很快清除,所以1G的空间很快就被吃掉了。

解决办法

通过Google大神,查到有同样问题的仁兄:

Silverlight 3 creates a lot of XCP temp files (20MB each)

http://www.anythingtheycando.com/blog/index.php/2010/02/02/silverlight-temp-file-issue/ (需翻)

找到了解决这一问题的办法:

在每个服务请求的回调函数中调用GC.Collect();强制清除这一缓存文件。事实上我也不是很明白GC.Collect()为什么会回收这种临时文件垃圾……谁让咱连它怎么产生的都不知道呢。

虽说GC.Collect()对性能会产生影响,但为了程序正常运行计,也不得不如此了,但愿Silverlight4能解决这一问题。

转载于:https://www.cnblogs.com/smjack/archive/2010/03/06/1679774.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值