0

HttpWebRequest.Timeoutプロパティの動作は.NET3.5と4.0の間で変更されましたか?ドキュメントはそう示唆しているようです:

.NET 3.5 MSDNドキュメントから:

タイムアウトは、GetResponseメソッドを使用して行われた後続の同期要求が応答を待機し、GetRequestStreamメソッドがストリームを待機するミリ秒数です。タイムアウト期間内にリソースが返されない場合、リクエストは、StatusプロパティがWebExceptionStatus.Timeoutに設定されたWebExceptionをスローします。

.NET 4.0ドキュメントは、この文を真ん中に追加します。

タイムアウトは、GetRequestStreamメソッドとGetResponseメソッドの呼び出しに個別に適用されるのではなく、要求と応答全体に適用されます。

これはかなり大きな変化のようです。「要求と応答全体」とは、要求の送信と応答の受信に費やされた時間全体を意味する場合があります。これは前の文と矛盾しているようです。応答ストリームの準備が整うのを待つのは速いかもしれません-基本的にサーバーが応答を取得/準備する時間だけです-しかし、ストリームを介して応答全体を受信するには長い時間がかかる可能性があります。

3.5と4.0の間でこの動作を比較した人はいますか?

4

1 に答える 1

1

.netコード(参照するmsdn docページ)のコード例を見ると、要求と応答は2つの別個の操作であるため、要求のタイムアウト操作が応答にコピーされます。したがって、デフォルトが100ミリ秒の場合、要求の場合は100ミリ秒、応答の場合は100ミリ秒であり、両方の経過時間は100ミリ秒ではありません。

長時間実行される要求または応答が予想される場合は、代わりに非同期操作を検討することに注意してください。

于 2012-11-23T03:16:16.037 に答える