【问题标题】:Using Steeltoe DiscoveryHttpMessageHandler with FlurlClient将 Steeltoe DiscoveryHttpMessageHandler 与 FlurlClient 一起使用
【发布时间】:2021-06-06 14:44:14
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: c# asp.net asp.net-core flurl steeltoe


    【解决方案1】:

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

    public class MyClass : IMyClass
    {
        private readonly IFlurlClient _flurlClient;
    
        public MyService(HttpClient httpClient) {
            _flurlClient = new FlurlClient(httpClient);
        }
    }
    

    【讨论】:

    • 我们已经完成了为 Flurl 创建自定义工厂以创建发现消息处理程序的过程,但我也有点喜欢您的解决方案。我将不得不通过我的队友,看看他们最喜欢哪种方式。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多