我们目前正在使用HttpClient
从 MVC 应用程序调用 Web API。
它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;
}
即使多次调用,这是否会阻止打开多个连接?