WebClient.DownLoadFileは、最初のリクエストを送信する前に時間がかかりすぎています
-
12-10-2019 - |
質問
次のコードを使用してファイルをダウンロードするだけの非常にシンプルなコンソールアプリケーションを書きました。
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
ステッピングがどういうわけか私には意味がなくなった場合、そしていくつかのプロキシ解像度が原因になっているように見えました。
私はついにオフになりました 設定を自動的に検出します の中に LAN設定 のダイアログ インターネット設定 Internet Explorer 8(Windows 7 x64を実行している)にあるダイアログは、チェックボックスセットなしでダイアログを残します。これにより、すべてが非常に速くなりました。もう遅延はありません。
まあ、私は私が観察していた問題を回避する方法を見つけましたが、誰かが私のコードの何が間違っているのかについて誰かがいくつかのアイデアを共有できれば嬉しいです。どういうわけか構成することで、どういうわけか同じ効果を達成できますか WebClient
実例?
解決
プロキシを明示的に設定しようとしましたか?
web.Proxy = new WebProxy();
それは基本的に、「プロキシをまったく使用しないでください - 試してはいけない」と言うことと同等です。
他のヒント
web.proxyプロパティを設定してみましたか?
元:
System.Net.WebClient web = new WebClient();
web.Proxy = new WebProxy("Address here");
web.DownloadFile("http://www.google.com", "file.txt");