【发布时间】:2018-12-04 20:22:09
【问题描述】:
Flurl 指出使用单例客户端是推荐的模式:
HttpClient 旨在被实例化一次并在应用程序的整个生命周期中重复使用。特别是在服务器应用程序中,为每个请求创建一个新的 HttpClient 实例将耗尽重负载下可用的套接字数量。这将导致 SocketException 错误。
但是从 Asp.Net Core 2.1 开始有updated rules for HttpClient lifetime in Net Core 2.1。
当你使用 HttpClientFactory 请求一个 HttpClient 时,实际上你每次都会得到一个新的实例,这意味着我们不必担心改变它的状态。此 HttpClient 可能(或可能不)使用池中现有的 HttpClientHandler,因此使用现有的打开连接。
如何修改 Flurl 以在后台使用 IHttpClientFactory?我应该创建自定义 Flurl 的 settings.HttpClientFactory 并通过 MS IHttpClientFactory 创建 HttpClient 吗?
【问题讨论】:
-
对于 ASP .Net 2.1 和 Flurl 2.0,无法按照 Todd Menier 的建议实例化 FlurlClient。
-
@RodrigoS.Teixeira 这在技术上是正确的,the constructor required to do it this way was introduced in Flurl.Http 2.3.1, released last April。有什么东西阻止你升级吗?