Я написал очень простое консольное приложение, которое просто загружает файл, используя следующий фрагмент кода:
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
, когда пошаговое выполнение как-то больше не имело смысла, и где какое-то разрешение прокси, казалось, было причиной.
Я наконец выключил Автоматическое определение настроек в диалоговом окне Параметры локальной сети диалогового окна Свойства обозревателя , найденного в Internet Explorer 8 (я использую Windows 7 x64), оставляя диалоговое окно без установленного флажка. Это волшебным образом заставляло все делать очень, очень быстро. Нет больше задержки.
Ну, я нашел способ обойти проблему, которую я наблюдал, но я был бы рад, если бы кто-то мог поделиться некоторыми идеями относительно того, что может быть не так с моим кодом. Можно ли как-то добиться того же эффекта, настроив экземпляр WebClient
?