.NET HttpClient зависает после нескольких запросов (если Fiddler не активен)
Я использую System.Net.Http.HttpClient
отправить последовательность запросов из консольного приложения в REST API и десериализовать ответы JSON в строго типизированные объекты. Моя реализация такова:
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;
}
Однако я столкнулся с проблемой, очень похожей на проблему, описанную в этом вопросе, когда все работает нормально, когда запросы маршрутизируются через Fiddler, но зависает после 4-го или 5-го запроса, когда Fiddler отключен.
Если причина проблемы та же, я предполагаю, что мне нужно сделать что-то еще с HttpClient
заставить его полностью освобождать свои ресурсы после каждого запроса, но я не могу найти примеры кода, которые показывают, как это сделать.
Надеюсь, кто-то может указать мне в правильном направлении.
Большое спасибо,
Тим
1 ответ
Вы не избавляетесь от HttpResponseMessage
объект. Это может оставить открытые потоки на сервере, и после заполнения некоторой квоты потоков на отдельном сервере запросы больше не будут отправляться.
using (var client = new HttpClient())
{
var content = new StringContent(data, Encoding.UTF8, "text/html");
using(var response = client.PostAsync(url, content).Result)
{
response.EnsureSuccessStatusCode();
return response.Content.ReadAsAsync<MyClass>().Result;
}
}