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

.net WebClient.DownloadFile在发送第一个请求之前花费的时间太长,.net,proxy,webclient,downloadfile,.net,Proxy,Webclient,Downloadfile,我编写了一个非常简单的控制台应用程序,它只是使用以下代码下载一个文件: System.Net.WebClient web = new System.Net.WebClient (); web.DownloadFile ("http://www.google.com", "file.txt"); 在我以前的开发机器上,速度非常快。我一执行DownloadFile方法,请求就通过了网络,响应很快就回来了。我用ProcMon工具检查了这种行为 然而,在切换到另一台机器(它恰好比我最初的开发盒功能强大

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

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选项”对话框的“LAN设置”对话框中的“自动检测设置”,该对话框位于Internet Explorer 8中。我正在运行Windows 7 x64,该对话框中未设置任何复选框。这神奇地使一切都做得非常,非常快。不要再拖延了


嗯,我已经找到了一种方法来规避我所观察到的问题,但是如果有人能分享一些关于我的代码可能有什么问题的想法,我会很高兴。我可以通过配置WebClient实例来达到同样的效果吗?

您是否尝试过显式设置代理

web.Proxy = new WebProxy();

这基本上等同于说,根本不使用代理-甚至不要尝试。

您是否尝试过显式设置代理

web.Proxy = new WebProxy();

这基本上等同于说,根本不使用代理-甚至不要尝试。

您尝试过设置web.proxy属性吗

例:


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

例:


和往常一样,你让我惊讶!你是对的,添加一个空的WebProxy实例就可以了。我从来没有想到.NET提供的代理属性会被初始化。一如既往,你让我惊讶!你是对的,添加一个空的WebProxy实例就可以了。我从未想到.NET提供的代理属性会被初始化。