シナリオ
の動作に頭を悩ませようとしていますHttpClient.Timeout
。MSDNはそれを「リクエストがタイムアウトするまでに待機するミリ秒数」とrequest
説明していますが、 が何を意味するのか、またはより具体的な制御が必要な場合はどうすればよいのか、完全にはわかりません。
私が発見したことの 1 つは、タイムアウトが少なくとも要求の送信にかかる時間を考慮していることです。これは、デフォルトの 100 秒のタイムアウトでは送信できないほど大きなデータを扱っているため、少しイライラします。コンテンツ全体。
うまくいかない解決策
簡単な解決策は、タイムアウトを大幅に増やすことかもしれませんが、これが非常に望ましくない結果をもたらす可能性があることに私は驚いています。クライアントがサーバーへの接続を確立できないとします。接続が確立されるまで 20 分間待つのはばかげていますが、転送が着実に進んでいる間に 20 分間待つのはまったく合理的です (少なくとも私のシナリオでは)。
質問)
のタイムアウト要素をより細かく制御する方法はありHttpClient
ますか? タイムアウトを無制限に設定し、CancellationToken
または他のメカニズムを介して独自のコードでタイムアウトを管理する必要があるでしょうか? そのレベルの制御が必要な場合は、HttpClient
完全に放棄して、基礎HttpWebRequest
となるHttpWebResponse
クラスに降りるほうがよいでしょうか?