.NET 6 在 Web API 项目控制器中使用 HTTP 客户端进行 API 调用

usa*_*ear 3 c# asp.net-web-api dotnet-httpclient .net-core asp.net-core

我对 .NET 还很陌生,并且一直在使用HttpClientAPI 控制器中调用其他 API。根据这篇文章,我应该只有一个HttpClient实例,因为它会导致套接字耗尽错误。

不过,我目前正在HttpClient为每个 API 控制器创建一个。我应该创建一个static包含单个实用程序类HttpClient,还是应该保留我所拥有的?使用本身调用其他 API 的 API 控制器时,是否有更好的替代方案或最佳实践?

如果需要更多信息,请告诉我。

Xin*_*hen 8

推荐使用httpclient的方法是使用IHttpClientFactoryDependency Inject

使用它IHttpClientFactory有几个好处,包括管理网络连接的生命周期。使用工厂创建客户端会重用连接池中的连接,从而不会创建太多套接字。连接会被重用并自动处置,以避免 DNS 级别问题。

通过使用IHttpClientFactory,我们可以解决直接实例化实例时遇到的所有初始问题HttpClient。重构为Typed客户端消费模式后,也分离得很好,更容易维护。它驱使我们编写更清晰、松散耦合的代码。

您可以阅读这两篇文章(1、2了解更多信息。