HttpClient предназначен для однократного создания экземпляра и повторного использования в течение всего жизненного цикла приложения. Создание класса HttpClient для каждого запроса приведет к исчерпанию количества сокетов, доступных при больших нагрузках. Эта проблема приведет к ошибкам SocketException. Возможные подходы к решению этой проблемы основаны на создании объекта HttpClient как одноэлементного или статического.
Но есть и другая проблема с HttpClient, которая может возникнуть при использовании его в качестве одноэлементного или статического объекта. В этом случае одноэлементный или статический HttpClient не учитывает изменения DNS, как объяснено в этой проблеме в репозитории .NET Core GitHub .
Чтобы устранить указанные выше проблемы и упростить управление экземплярами HttpClient, в .NET Core 2.1 был представлен новый HttpClientFactory , который также можно использовать для реализации устойчивых HTTP-вызовов путем интеграции с ним Polly.
Более подробная информация, пожалуйста, посмотрите:
https://docs.microsoft.com/en-us/dotnet/standard/microservices-architecture/implement-resilient-applications/use-httpclientfactory-to-implement-resilient-http-requests