Pergunta

I have written a very simple console application which is just downloading a file using the following piece of code:

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

On my previous development machine, this was very fast. As soon as I executed the DownloadFile method, the request went over the wire and the response came back very soon. I inspected this behaviour with the ProcMon tool.

However, after switching to another machine, which happens to be much more powerful than my initial development box, I noticed that nothing would happen for about 5-8 seconds, when calling into DownloadFile. Going to the same URL with a browser would show almost immediate results.

After spending several hours looking into this, stepping into the .NET source code, I finally gave up in System.Net.ServicePointManager.FindServicePoint where the stepping somehow no longer made sense to me, and where some proxy resolution seemed to be in cause.

I finally turned off Automatically detect settings in the LAN Settings dialog of the the Internet Options dialog, found in Internet Explorer 8 (I am running Windows 7 x64), leaving the dialog with no checkbox set. This magically made everything do very, very fast. No more delay.

Well, I've found a way to circumvent the problem I was observing, but I'd be glad if somebody could share some ideas as to what might be wrong with my code. Can I somehow achieve the same effect by somehow configuring the WebClient instance?

Foi útil?

Solução

Have you tried explicitly setting the proxy?

web.Proxy = new WebProxy();

That should basically be equivalent to saying, "Don't use a proxy at all - don't even try."

Outras dicas

Have you tried setting the web.Proxy properties?

Ex:

System.Net.WebClient web = new WebClient();
web.Proxy = new WebProxy("Address here");
web.DownloadFile("http://www.google.com", "file.txt");
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top