c# – 奇怪的WebClient行为:1台计算机挂起,其他计算机不挂载同一文件

c# – 奇怪的WebClient行为:1台计算机挂起,其他计算机不挂载同一文件,第1张

概述我有一个简单的C#系统托盘应用程序,它使用System.Net.WebClient下载几个文件,每个文件的范围为3-15MB. WebClient正在通过HTTPS下载,我控制从中进行下载的服务器.文件通过直接路径从Web浏览器下载得很好,WebClient完全能够从该服务器处理.DownloadString()方法(即,将短文本文件下载到字符串). 奇怪的是,在24小时内发生了三件事情,我怀疑某 我有一个简单的C#系统托盘应用程序,它使用System.Net.WebClIEnt下载几个文件,每个文件的范围为3-15MB. WebClIEnt正在通过httpS下载,我控制从中进行下载的服务器.文件通过直接路径从Web浏览器下载得很好,WebClIEnt完全能够从该服务器处理.DownloadString()方法(即,将短文本文件下载到字符串).

奇怪的是,在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台计算机挂起,其他计算机不挂载同一文件所遇到的程序开发问题。

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

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

原文地址: http://outofmemory.cn/langs/1239596.html

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

发表评论

登录后才能评论

评论列表(0条)

保存