如何同时使用IHttpClientFactory和Typed HttpClient?

时间:2019-06-24 13:05:59

标签: asp.net-core dotnet-httpclient httpclientfactory

我有一个类型化的HttpClient,(比如说)另一个使用IHttpClientFactory来获取HttpClient实例的服务/类。

要注册IHttpClientFactory,我将其注入为services.AddHttpClient()。为了注册类型客户,我选择services.AddHttpClient<MyTypedClient>

我的问题是,如果我同时使用两个用例,您是否认为会有问题?对HttpMessageHandler池有什么影响?

谢谢, Cem。

1 个答案:

答案 0 :(得分:1)

不,不。您可以使用任何您想要的。 IHttpClientFactory处理HttpMessageHandler个实例的集合。注入类型化的客户端时,实际上是在调用IHttpClientFactory,并创建了新的HttpClient实例,并将其处理程序设置为已经创建的HttpMessageHandler实例或新实例。

换句话说,它主要是语法糖。在任何一种情况下都将调用IHttpClientFactory,并且它始终创建一个新的HttpClient实例,并根据名称将处理程序设置为要跟踪的实例。 “类型化”客户端实际上只是一个“命名”客户端,其类型就是名称,并且所有客户端实际上都是“命名”的,因为它们都存储在ConcurrentDictionary中,其中名称是键。