В настоящее время мы используем HttpClient
для вызова веб-API из приложения MVC.
HttpClient
является частью статического вспомогательного класса, как показано ниже
public static class ApiClient
{
private static HttpClient MyHttpClient()
{
HttpClient client = new HttpClient();
...
return client;
}
public static T HttpGet<T>(string requestUri)
{
using (var client = MyHttpClient())
{
...
}
}
}
и он вызывается из контроллера MVC, как показано ниже
ApiClient.HttpGet<MyModel>("<<API URL>>");
Так что всякий раз, когда вызывается ApiClient, открывается новое базовое соединение, которое не является правильным способом.
Я прочитало HttpClientFactory
и прочитайте эту запись , и я привел к изменению логики создания как
private static HttpClient MyHttpClient()
{
var serviceProvider = new ServiceCollection().AddHttpClient().BuildServiceProvider();
var httpClientFactory = serviceProvider.GetService<IHttpClientFactory>();
var client = httpClientFactory.CreateClient();
//HttpClient client = new HttpClient();
...
return client;
}
Будет ли это препятствовать открытию нескольких соединений, даже если они были вызваны несколько раз?