WebClient.DownloadFile在发送第一个请求之前花了太长时间

时间:2011-01-17 21:23:18

标签: .net proxy webclient downloadfile

我编写了一个非常简单的控制台应用程序,它只是使用以下代码下载文件:

System.Net.WebClient web = new System.Net.WebClient ();
web.DownloadFile ("http://www.google.com", "file.txt");

在我以前的开发机器上,这非常快。一旦我执行DownloadFile方法,请求就越过了线路,响应很快就会响起。我使用ProcMon工具检查了这种行为。

但是,在切换到另一台机器之后,我发现在调用DownloadFile时大约5-8秒没有发生任何事情。使用浏览器访问相同的URL会立即显示结果。

在花了几个小时研究这个,进入.NET源代码之后,我终于放弃了System.Net.ServicePointManager.FindServicePoint,其中踩到某种方式对我来说不再有意义,并且代理解决方案似乎有些原因

我最终在Internet Explorer 8(I中的 Internet选项对话框的 LAN设置对话框中关闭了自动检测设置我正在运行Windows 7 x64),没有设置复选框。这神奇地使一切都做得非常非常快。没有更多的延迟。

好吧,我找到了一种方法来规避我所观察到的问题,但如果有人可以就我的代码可能出现的问题分享一些想法,我会很高兴。我可以通过某种方式配置WebClient实例以某种方式实现相同的效果吗?

2 个答案:

答案 0 :(得分:8)

您是否尝试过明确设置代理?

web.Proxy = new WebProxy();

这应该基本上等同于说“不要使用代理 - 甚至不要尝试。”

答案 1 :(得分:2)

您是否尝试过设置web.Proxy属性?

例如:

System.Net.WebClient web = new WebClient();
web.Proxy = new WebProxy("Address here");
web.DownloadFile("http://www.google.com", "file.txt");