Frage

Ich habe eine sehr einfache Konsolenanwendung geschrieben, die nur eine Datei heruntergeladen wird mit dem folgenden Stück Code:

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

Auf meiner bisherigen Entwicklung Maschine war dies sehr schnell. Sobald ich die DownloadFile Methode ausgeführt, ging die Anfrage über den Draht und die Antwort kam sehr bald wieder. Ich inspizierte dieses Verhalten mit dem ProcMon Werkzeug.

Nachdem jedoch auf eine andere Maschine wechseln, die viel mächtiger als meine anfängliche Entwicklung Box sein geschieht, bemerkte ich, dass nichts für etwa 5-8 Sekunden passieren würde, wenn sie in DownloadFile aufrufen. Gehen auf die gleiche URL mit einem Browser würde fast sofortige Ergebnisse zeigen.

Nach mehreren Stunden zu verbringen in diesem suchen, ein Schritt in die .NET-Quellcode, gab ich schließlich in System.Net.ServicePointManager.FindServicePoint, wo der Schritt länger irgendwie keinen Sinn für mich gemacht, und wo einige Proxy-Auflösung schien Ursache zu sein.

ich ausgeschaltet schließlich Automatische Suche der Einstellungen in der LAN-Einstellungen Dialog der die Internetoptionen Dialog, in Internet Explorer 8 (I gefunden Windows 7 x64), so dass der Dialog ohne Markierungsfelder am laufen. Dieses magische Weise machte alles tut sehr, sehr schnell. Keine Verzögerung.

Nun, ich habe einen Weg gefunden, um das Problem zu umgehen, ich beobachtete, aber ich würde mich freuen, wenn jemand ein paar Ideen teilen konnte, was mit meinem Code falsch sein könnte. Kann ich irgendwie durch irgendwie Konfiguration der WebClient Instanz die gleiche Wirkung erzielen?

War es hilfreich?

Lösung

Haben Sie versucht, explizit die Proxy-Einstellung?

web.Proxy = new WebProxy();

Das sollte grundsätzlich äquivalent sein zu sagen: „Do einen Proxy nicht verwenden -. Nicht einmal versuchen“

Andere Tipps

Haben Sie die web.Proxy Eigenschaften versucht Einstellung?

Beispiel:

System.Net.WebClient web = new WebClient();
web.Proxy = new WebProxy("Address here");
web.DownloadFile("http://www.google.com", "file.txt");
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top