C # Как установить HttpClient Keep-Alive в false
У меня была проблема низкой производительности с HTTP-запросами в .NET. Запрос HTTP GET к API REST на локальном хосте занял около 500 мс. Я потратил много времени, чтобы это исправить. Я перепробовал много способов:HttpClient
, HttpWebRequest
, WebClient
а такжеRestSharp
, Никто из них не работает. Большинство решений в Интернете, как говорят, устанавливаютProxy
параметр дляnull
но это все равно не будет работать быстрее.
Единственный способ сократить это время - установить для параметра Keep-Alive запроса значение false:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
request.Method = "GET";
request.KeepAlive = false;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Это прекрасно работает. Время сокращено до 7-10 мс. Но сейчас по некоторым причинам мне нужно использоватьHttpClient
вместоHttpWebRequest
, И я не могу найти, как установить Keep-Alive в false дляHttpClient
, Единственное, что я нашел, это как установить его в true, установив заголовок «connection» в «Keep-Alive».
Я использую этот код для запроса POST HttpClient:
HttpClient _http = new HttpClient();
_http.DefaultRequestHeaders.Accept.Clear();
_http.DefaultRequestHeaders.Add("Connection", "Keep-Alive");
_http.DefaultRequestHeaders.Add("Keep-Alive", "timeout=600");
var content = new StringContent(
request, Encoding.UTF8, "application/%appname%+xml");
content.Headers.ContentType.Parameters.Add(
new NameValueHeaderValue("type", "payload"));
HttpResponseMessage response = await _http.PostAsync(uri, content);
И это все еще занимает около 500-600 мсек.