#asp.net-web-api2 #dotnet-httpclient
#asp.net-web-api2 #dotnet-httpclient
Вопрос:
Согласно MSDN HttpClient предназначен для создания экземпляра один раз и повторного использования на протяжении всего срока службы приложения. Создание экземпляра класса HttpClient для каждого запроса исчерпает количество доступных сокетов при больших нагрузках. Это приведет к ошибкам SocketException. Ниже приведен пример правильного использования HttpClient.
public class GoodController : ApiController
{
private static readonly HttpClient HttpClient;
static GoodController()
{
HttpClient = new HttpClient();
}
}
Но в Windows form (очевидно, что контроллер здесь не имеет смысла), как правильно управлять HttpClient в настольном приложении, каждый экземпляр HttpClient открывает порт на сервере, поэтому очевидно, что несколько экземпляров не будут хорошими.
Комментарии:
1. Создайте одноэлементный класс, который экспортирует один
HttpClient
, используемый каждым объектом.HttpClient
является ли потокобезопасным, если вы используетеSendAsync
во всех своих вызовах (т. Е. Не изменяете никакихDefault...
заголовков)