C# 将Steeltoe DiscoveryHttpMessageHandler与FlurlClient一起使用
我希望将我们的HttpClient转换为使用Flurl。但是,我们的HttpClient当前配置为通过Steeltoe使用服务发现。基本上,它是在ConfigureServices中实现的: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
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创建自定义工厂的过程,该工厂创建了发现消息处理程序,但我也有点喜欢您的解决方案。我必须通过我的队友,看看他们最喜欢哪种方式。非常感谢。