Утечка памяти HttpClientFactory

В моем консольном приложении С# (.net 4.6.1) мне необходимо выполнять вызовы API (получить/отправить/вставить/удалить) и т. д. для случайных конечных точек. Подробная информация об URL-адресе, полезной нагрузке и т. д. поступает из таблицы базы данных. Консольное приложение получает экземпляр httpClientFactory, как показано ниже.

var serviceProvider = new ServiceCollection().AddHttpClient().BuildServiceProvider();
var httpClientFactory = serviceProvider.GetService<IHttpClientFactory>();

Для каждой записи, которую я получаю из таблицы, я вызываю метод для вызова API. В этот метод я передаю httpClientFactory. В этом методе я создаю и использую HttpClient следующим образом.

var httpClient = httpClientFactory.CreateClient();
//set headers
//make api call, for ex  var response = await httpClient.PutAsync(apiTask.URL, content);
//Return resposne

Я не могу избавиться от httpClient. Как я вижу, использование памяти продолжает увеличиваться, и я не вижу, чтобы оно снижалось даже спустя несколько часов.

Я следил за следующей статьей https://docs.microsoft.com/en-us/aspnet/core/fundamentals/http-requests?view=aspnetcore-2.1

Я использую это правильно? Должен ли я использовать «using (httpClient)»


person user738338    schedule 14.10.2018    source источник


Ответы (1)


Нет необходимости создавать новый экземпляр HttpClient для каждого запроса, вы можете использовать общий доступ к одному экземпляру между всеми ними, поскольку HttpClient предназначен для повторного использования и потокобезопасности.

проверьте это, это и это, также стоит посмотреть на это

person Saeed Ganji    schedule 14.10.2018