gpt4 book ai didi

c# - 如何为通过 HttpClientFactory 直接创建的 HttpClient 配置 Web 代理?

转载 作者:太空狗 更新时间:2023-10-30 00:37:22 29 4
gpt4 key购买 nike

  • 我所说的直接是指没有 Asp.Net Core IoC/DI 助手。

我没有找到关于它的文档,我认为我当前的解决方案不是最佳的,因为处理程序生命周期不是由 HttpClientFactory 管理的:

var proxiedHttpClientHandler = new HttpClientHandler() { Proxy = httpProxy };
_createHttpClient = () => HttpClientFactory.Create(proxiedHttpClientHandler);

有没有更好的解决方案?

最佳答案

将客户端添加到服务集合时,您应该能够在那里配置处理程序

使用命名客户端方法,我将使用常量来保存客户端名称。

public static class NamedHttpClients {
public const string ProxiedClient = "ProxiedClient";
}

从那里开始,只需配置客户端

//...
var serviceCollection = new ServiceCollection();

serviceCollection
.AddHttpClient(NamedHttpClients.ProxiedClient)
.ConfigurePrimaryHttpMessageHandler(() => new HttpClientHandler() {
Proxy = httpProxy
});

var services = serviceCollection.BuildServiceProvider();

以便在通过已解析的 IHttpClientFactory 调用客户端时

var httpClientFactory = services.GetService<IHttpClientFactory>();

var client = httpClientFactory.CreateClient(NamedHttpClients.ProxiedClient);

返回的客户端将使用代理处理程序。

关于c# - 如何为通过 HttpClientFactory 直接创建的 HttpClient 配置 Web 代理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52526095/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com