奇怪的是,在24小时内发生了三件事情,我怀疑某种特定于机器的配置或缓存,但我想知道其他人可能知道的关于WebClIEnt内部的内容可能会让他们冒险猜测:
>开发机器#1在调试模式下运行此代码并在周五之前下载文件(称为Megabytefile1和Megabytefile2)没有问题.下载花了3-5秒,最多.
>突然,开发机器#1在周五下午停止下载Megabytefile1.行为如下:
> WebClIEnt.Downloadfile()无限期挂起
> targetfileFullPath上的文件已创建,但有0个字节.
>主线程无限期地阻塞.
>必须退出申请.
>具有相同 *** 作系统配置的其他开发机器可以正常运行代码并成功下载.
>在DeveloperMachine1上使用Chrome或Internet Explorer手动下载这些文件的工作正常,有或没有查询参数.
>如果fiddler正在运行,则DevelopmentMachine1将下载该文件(即使没有安装fiddler httpS证书冒充者).换句话说,如果我试图在这台机器上嗅探电线,一切正常.
下载代码的相关部分如下:
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 ...总结
以上是内存溢出为你收集整理的c# – 奇怪的WebClient行为:1台计算机挂起,其他计算机不挂载同一文件全部内容,希望文章能够帮你解决c# – 奇怪的WebClient行为:1台计算机挂起,其他计算机不挂载同一文件所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)