我有一个类型化的 HttpClient 和(比方说)另一个使用 IHttpClientFactory 来获取 HttpClient 实例的服务/类。
要注册 IHttpClientFactory,我将其注入为services.AddHttpClient()
. 为了注册打字客户,我选择services.AddHttpClient<MyTypedClient>
我的问题是,如果我同时使用这两个用例,你认为会有问题吗?对 HttpMessageHandler 池有影响吗?
谢谢,杰姆。
我有一个类型化的 HttpClient 和(比方说)另一个使用 IHttpClientFactory 来获取 HttpClient 实例的服务/类。
要注册 IHttpClientFactory,我将其注入为services.AddHttpClient()
. 为了注册打字客户,我选择services.AddHttpClient<MyTypedClient>
我的问题是,如果我同时使用这两个用例,你认为会有问题吗?对 HttpMessageHandler 池有影响吗?
谢谢,杰姆。
简单地说,没有。你可以使用任何你想要的东西。IHttpClientFactory
处理HttpMessageHandler
实例的集合。当您注入一个类型化的客户端时,实际发生的IHttpClientFactory
是调用,并HttpClient
创建新实例,其处理程序设置为已创建的HttpMessageHandler
实例或新实例。
换句话说,它主要是语法糖。IHttpClientFactory
在任何一种情况下都会被调用,并且它总是创建一个新HttpClient
实例,将处理程序设置为基于名称进行跟踪的处理程序。“类型化”客户端实际上只是一个“命名”客户端,类型作为名称,所有客户端实际上都是“命名”,因为它们都存储在 aConcurrentDictionary
中,其中名称是键。