2012-05-12 35 views
4
string url = "http://google.com/index.html"; 
WebClient client = new WebClient(); 
Stopwatch sw = new Stopwatch(); 
sw.Start(); 
string text = client.DownloadString(url); 
sw.Stop(); 
Console.WriteLine(sw.Elapsed); 

秒表说DownloadString方法首次调用需要13-15秒,但重复调用需要花费大量时间。这是怎么发生的?我该如何解决?WebClient.DownloadString首次调用时需要大约15秒

+1

[.NET - DownloadStringAsync在第一次调用时阻塞线程14秒]的可能重复(http://stackoverflow.com/questions/3128563/net-downloadstringasync-blocks-thread-for-14-seconds-on-first -all) – dtb

回答

9

可能有几件事情会导致第一次通话延迟,如检测代理设置。尝试将代理设置为空:

client.Proxy = null; 
+0

这似乎是原因。 – user1306322

+3

@ user1306322请务必阅读其他答案;这是延迟的原因。如果您将其设置为空,您可能会让某些用户无法使用您的程序。除非这只是一个内部工具,当然。 –

9

您的机器配置为执行自动代理检测。另外

Screenshot

,您可以手动覆盖由Web客户端使用的代理;:

你可以在这里禁用null指没有代理:

client.Proxy = null; 

然而,你应该向用户提供在这种情况下,你的应用程序配置代理,因为有些用户在访问网页时使用代理。

相关问题