2011-02-08 15 views
11

私は(単なるテキスト、他には何が含まれています)のウェブサイトからの文字列をダウンロードするためにWebクライアントを使用していますので、私はDownloadStringメソッドを使用します。C#のWebクライアントの演技は、最初の時間が遅く

WebClient wc = new WebClient(); 
string str = wc.DownloadString("http://blah"); 

それは正常に動作しますしかし、問題は、最初に文字列をダウンロードすると、5秒間という長い時間がかかります。その後、速く動作します。なぜこれが起こり、どのようにこの問題を克服することができますか?

+0

は、このWebサービスまたはいくつかのいずれかよそですか?これはあなたのクライアントを始めるたびに起こりますか? (たとえ文字列がダウンロードされたときに直接再起動しても?) – Peter

+0

関連:http://stackoverflow.com/questions/4415443 –

+0

また、メソッドの非同期バージョンを使用している場合でも、これによりアプリケーションがフリーズすることに注意してください。どのようにこれのようなたわごとは解放される! –

答えて

21

WebClientオブジェクトのProxyプロパティをnullに設定すると、表示される遅延がなくなります。プロキシを使用するようにシステムを設定した場合は、WebRequest.GetSystemWebProxyで取得できます。 2番目の方法では、いずれの場合も遅延をなくす必要があります。

+0

すばらしい答え!どうもありがとうございました。 –

+0

完璧な答え。ありがとう。 – Kloar

+0

すばらしい答え。ありがとう! –

3

まず、DNSルックアップを実行してホストに接続する必要があります。その後、同じプロセス内で同じ接続を再利用している可能性があります。どこでもに非常に最初のリクエストのために、うまく

あなたが本当にそれを遅くするためにネットワークレベルで何が起こっているか確認したい場合は

、私はあなたが Wiresharkをつかむ示唆プロキシ設定などを検出しようとすることができますそれを使ってトラフィックを監視します。

6

私は同じことに気づいた。ドットトレースは、プロキシオプションを列挙し、その時間の大半を費やしています示しています

関連する問題