C# 将Steeltoe DiscoveryHttpMessageHandler与FlurlClient一起使用

C# 将Steeltoe DiscoveryHttpMessageHandler与FlurlClient一起使用,c#,asp.net,asp.net-core,flurl,steeltoe,C#,Asp.net,Asp.net Core,Flurl,Steeltoe,我希望将我们的HttpClient转换为使用Flurl。但是,我们的HttpClient当前配置为通过Steeltoe使用服务发现。基本上,它是在ConfigureServices中实现的: services.AddHttpClient<IMyClass, MyClass>().AddHttpMessageHandler<DiscoveryHttpMessageHandler>(); services.AddHttpClient().AddHttpMessageH

我希望将我们的HttpClient转换为使用Flurl。但是,我们的HttpClient当前配置为通过Steeltoe使用服务发现。基本上,它是在ConfigureServices中实现的:

   services.AddHttpClient<IMyClass, MyClass>().AddHttpMessageHandler<DiscoveryHttpMessageHandler>();
services.AddHttpClient().AddHttpMessageHandler();
DiscoveryHttpMessageHandler是Steeltoe库()中的自定义http消息处理程序


如何使用Flurl访问IHttpClientBuilder,以便添加相同的消息处理程序?或者Flurl还有其他干净的方法为创建的每个HttpClient/FlurlClient添加自定义消息处理程序吗?

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

public class MyClass : IMyClass
{
    private readonly IFlurlClient _flurlClient;

    public MyService(HttpClient httpClient) {
        _flurlClient = new FlurlClient(httpClient);
    }
}

我们已经完成了为Flurl创建自定义工厂的过程,该工厂创建了发现消息处理程序,但我也有点喜欢您的解决方案。我必须通过我的队友,看看他们最喜欢哪种方式。非常感谢。