Использование HttpClient для выполнения вызова в веб-API

Я работаю над проектом веб-API .NET 4.6.1. В рамках этого проекта мне нужно вызвать другой веб-API, и я хочу использовать для этого HttpClient.

Судя по моим онлайн-исследованиям, вы не можете полагаться на то, что просто сделаете обычный HttpClient в предложении using, так как он неправильно собирает мусор и может привести к утечке памяти.

Например, я сейчас использую его следующим образом:

using (HttpClient client = new HttpClient { Timeout = TimeSpan.FromSeconds(CONTENTFUL_TIMEOUT_IN_SECONDS) } )
{
    responseText = await client.GetStringAsync(uri).ConfigureAwait(continueOnCapturedContext:false);
}

Но, как предлагается в других статьях из Stack Overflow и других, это приводит к утечкам памяти, и способ обойти это — совместно использовать один экземпляр HttpClient. Например, проверьте HTTPCLIENT ДЕСТАБИЛИЗИРУЕТ ВАШЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ и HttpClientHandler/HttpClient Утечка памяти.

Однако я не уверен, как настроить общий экземпляр HttpClient из самого WebAPI?


person Steely77    schedule 04.10.2017    source источник


Ответы (1)


Вы должны посмотреть, как реализовать шаблон singleton. См. это.

Затем вы можете создать синглтон HttpClient и сделать его ответственным за все вызовы HTTP из вашего API.

person Ipsit Gaur    schedule 04.10.2017