c# – 奇怪的WebClient行为:1台计算机挂起,其他计算机不挂载同
我有一个简单的C#系统托盘应用程序,它使用System.Net.WebClient下载几个文件,每个文件的范围为3-15MB. WebClient正在通过HTTPS下载,我控制从中进行下载的服务器.文件通过直接路径从Web浏览器下载得很好,WebClient完全能够从该服务器处理.DownloadString()方法(即,将短文本文件下载到字符串).
奇怪的是,在24小时内发生了三件事情,我怀疑某种特定于机器的配置或缓存,但我想知道其他人可能知道的关于WebClient内部的内容可能会让他们冒险猜测: >开发机器#1在调试模式下运行此代码并在周五之前下载文件(称为MegabyteFile1和MegabyteFile2)没有问题.下载花了3-5秒,最多. > WebClient.DownloadFile()无限期挂起 >具有相同操作系统配置的其他开发机器可以正常运行代码并成功下载. 下载代码的相关部分如下: using (WebClient client2 = new WebClient()) { client2.DownloadFile(String.Format("{0}?{1}",thePath,queryParams),targetFileFullPath); } 我在这个盒子上尝试过通常的sysadmin东西:重新启动它,清除Internet Explorer缓存和临时目录等. 我知道我需要改变处理挂起下载的策略,因为我相信现实世界中会有下载.但是,如果我不明白导致这种特殊故障模式的原因,我不会想到所有的角落情况.任何人都知道WebClient中发生了什么,以便猜测为什么这台机器是“特殊的”? 谢谢! 解决方法
遇到同样的问题,但找到了另一种解决方案.
这里相当复杂的讨论: http://social.msdn.microsoft.com/Forums/en-US/a00dba00-5432-450b-9904-9d343c11888d/webclient-downloadstringasync-freeze-my-ui?forum=ncl 简而言之,问题是Web客户端正在搜索代理服务器并挂起应用程序. WebClient webClient = new WebClient(); webClient.Proxy = null; ... Do whatever else ... (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |