Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

WebClient.DownloadString takes about 15 seconds when first called

Tags:

c#

webclient

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);

Stopwatch says DownloadString method takes 13-15 seconds when first called, but repeated calls take sensible amounts of time. How does this happen and how do I fix it?

like image 818
user1306322 Avatar asked May 12 '12 23:05

user1306322


2 Answers

There may be a couple of things that would cause a delay on the first call such as detecting proxy settings. Try setting the proxy to null:

client.Proxy = null;
like image 82
nivlam Avatar answered Nov 16 '22 14:11

nivlam


Your machine is configured to perform Automatic Proxy Detection.

You can disable it here:

Screenshot

Alternatively, you can manually override the proxy to be used by the WebClient; null means no proxy:

client.Proxy = null;

However, you should offer the user to configure a proxy in your application in this case, because some users have to use a proxy when accessing the Web.

like image 32
dtb Avatar answered Nov 16 '22 16:11

dtb