System.Net.Http.HttpClient
を使用して、一連の要求をコンソールアプリケーションからREST APIに送信し、JSON応答を強く型付けされたオブジェクトに逆シリアル化します。私は要求がフィドラー経由でルーティングされたときに、すべてが正常に動作することによりthis question、で説明したものと非常に類似した問題が発生しています、しかし.NET HttpClientがいくつかの要求の後でハングします(Fiddlerがアクティブでない限り)
using (var client = new HttpClient())
{
var content = new StringContent(data, Encoding.UTF8, "text/html");
var response = client.PostAsync(url, content).Result;
response.EnsureSuccessStatusCode();
return response.Content.ReadAsAsync<MyClass>().Result;
}
が、それは第四または第五リクエストの後にハングアップ:私の実装では、このようなものですフィドラーは無効です。
問題の原因が同じ場合は、要求ごとにリソースを完全に解放するためにHttpClient
で何かを行う必要があると思われますが、これを行う方法を示すコードサンプルは見つかりません。
誰かが私を正しい方向に向けることができます。
多くのおかげで、あなたはHttpResponseMessage
オブジェクトを廃棄されていません
ティム
ありがとうAndrew - それは命を救う人でした。実際、HttpWebRequestを使用するときにこの問題が発生していましたが、その解決策は同じでしたが、HttpClientコードパターンでこれを行う方法はすぐには分かりませんでした。再度、感謝します。 –
ここに何か他のことがあります。ここでの唯一のストリームは、応答メッセージのContentプロパティに割り当てられたStreamContentオブジェクトに渡されるNetworkStreamです。このようにHttpClientを使用すると、応答本体が自動的にバッファリングされ、検索できないストリームはバッファされると自動的に破棄されます。 HttpCompletionOption.ResponseContentReadを使用してHttpClientによって取得されたHttpResponseMessageを処分する必要はありません。 –