如何同时使用 IHttpClientFactory 和 Typed HttpClient?

How to use both IHttpClientFactory and Typed HttpClient?

我有一个类型化的 HttpClient 和(比方说)另一个使用 IHttpClientFactory 获取 HttpClient 实例的 service/class。

为了注册 IHttpClientFactory,我将其注入 services.AddHttpClient()。为了注册类型化的客户端,我使用 services.AddHttpClient<MyTypedClient>

我的问题是,如果我同时使用这两个用例,你认为会有问题吗?对 HttpMessageHandler 池有影响吗?

谢谢, 杰姆.

简单地说,没有。你可以使用任何你想要的。 IHttpClientFactory 处理 HttpMessageHandler 个实例的集合。当你注入一个类型化的客户端时,实际发生的是 IHttpClientFactory 被调用,新的 HttpClient 实例被创建,它的处理程序被设置为一个已经创建的 HttpMessageHandler 实例或者一个新实例。

换句话说,它主要是语法糖。 IHttpClientFactory 在任何一种情况下都会被调用,它总是创建一个新的 HttpClient 实例,根据名称将处理程序设置为正在跟踪的处理程序。 "typed" 客户端实际上只是一个 "named" 客户端,以类型作为名称,所有客户端都有效 "named" 因为它们都存储在 ConcurrentDictionary 中,其中名字是关键。