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

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

在我以前的开发机器上,这很快。我执行 DownloadFile 方法,请求越过电线,响应很快就会回来。我使用Procmon工具检查了这种行为。

但是,切换到另一台机器(恰好比我的初始开发框强大得多)之后,我注意到当打电话给5-8秒时什么都不会发生 DownloadFile. 。使用浏览器进入同一URL将显示几乎立即的结果。

花了几个小时来研究这一点,介入.NET源代码,我终于放弃了 System.Net.ServicePointManager.FindServicePoint 在某种程度上对我来说,踩踏不再有意义,而某些代理决议似乎是有原因的。

我终于关闭了 自动检测设置 在里面 LAN设置 对话 互联网选项 对话框,在Internet Explorer 8(我正在运行Windows 7 x64)中找到,而对话框没有复选框集。这使一切都变得非常非常快,这使一切变得非常快。没有更多的延迟。

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

有帮助吗?

解决方案

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

web.Proxy = new WebProxy();

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

其他提示

您是否尝试过设置Web.proxy属性?

前任:

System.Net.WebClient web = new WebClient();
web.Proxy = new WebProxy("Address here");
web.DownloadFile("http://www.google.com", "file.txt");
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top