.NET IHttpClientFactory:配置命名客户端的代理
为 IHttpClientFactory 命名客户端的主处理器附加代理,并在调用点用同一个名称获取该客户端。
为某个命名 HttpClient 配置的代理,并不会自动配置 IHttpClientFactory 返回的每一个客户端。请让注册时使用的名称与请求时使用的名称保持一致。
services.AddHttpClient("via-proxy")
.ConfigurePrimaryHttpMessageHandler(() => new HttpClientHandler
{
Proxy = new WebProxy("http://203.0.113.10:8080"),
UseProxy = true
});然后获取该命名配置:
var client = factory.CreateClient("via-proxy");该端点仅作示例。对于获准的公共服务请求,HTTP 代理列表可为该命名客户端的 WebProxy URL 提供候选。在别处创建默认的未命名客户端属于另一种查找,即使两个客户端都来自同一个注入的工厂。
应在主处理器上配置连接级别的代理行为,而不是把它当作目标请求头。工厂可以独立于它返回的 HttpClient 对象来管理处理器的生命周期。
如果调用由类型化客户端或另一个 SDK 拥有,请检查是哪个注册提供了它的 HttpClient。一个配置正确但从未被使用的命名客户端不会影响该 SDK 的网络路径。
将这种配置用于稳定的路由策略。在操作之间更换正在使用的处理器仍然是一个独立的并发与生命周期问题。