1

我希望将我们的 HttpClients 切换为使用 Flurl。但是,我们的 HttpClient 当前配置为通过 Steeltoe 使用服务发现。基本上它在 ConfigureServices 中执行此操作:

   services.AddHttpClient<IMyClass, MyClass>().AddHttpMessageHandler<DiscoveryHttpMessageHandler>();

DiscoveryHttpMessageHandler 是 Steeltoe 库 ( https://github.com/SteeltoeOSS )中的自定义 http 消息处理程序

如何使用 Flurl 访问 IHttpClientBuilder 以便添加相同的消息处理程序?或者 Flurl 是否有另一种干净的方法来为每个创建的 HttpClient/FlurlClient 添加自定义消息处理程序?

4

1 回答 1

2

有几种方法可以使用 Flurl 添加自定义消息处理程序(例如使用自定义工厂),但由于您已经在使用IHttpClientFactory,我认为获得所需内容的最简单方法(也是我推荐的方法)是继续注入HttpClient您的服务,并在服务中使用 Flurl 将它们包装起来:

public class MyClass : IMyClass
{
    private readonly IFlurlClient _flurlClient;

    public MyService(HttpClient httpClient) {
        _flurlClient = new FlurlClient(httpClient);
    }
}
于 2021-03-09T14:22:11.983 回答