【问题标题】:How do I use the options pattern to configure properties for HttpClient?如何使用选项模式来配置 HttpClient 的属性?
【发布时间】:2022-01-18 16:24:22
【问题描述】:

我一直在阅读 Microsoft 规定的 options pattern,以允许在应用程序启动时将强类型配置设置为 registered,以后可以将其注入需要访问配置值的服务中。

我的应用程序使用 HttpClient 发出 HTTP 请求,当然,我希望将目标 URI 存储在配置中,因为它们会根据环境(dev/test/etc)而改变。

我听说即使 HttpClient 实现了 IDisposable,我们也不应该将它包装在 using (... 语句中,因为它在处理后等待连接超时时可能会泄漏连接。这导致了一个涉及static property 在应用程序的生命周期内保存 HttpClient 的实例,以避免泄漏。

所以现在我一直在弄清楚如何实例化一个静态的、希望是只读的属性,该属性取决于我将在实例构造函数中接收的配置。听起来我需要一把锁之类的东西,但我不确定最安全的结构方式。

【问题讨论】:

    标签: .net-core dependency-injection configuration


    【解决方案1】:

    微软有introduced IHttpClientFactory 来解决这个问题。

    解决上述问题,制作HttpClient实例 易于管理,.NET Core 2.1 引入了 IHttpClientFactory 接口 可用于配置和创建 HttpClient 实例 应用程序通过依赖注入 (DI)。

    在连接我的服务时,我通过调用 .AddHttpClient 而不是 .AddTransient 在我的 Azure Functions 应用程序中进行了此设置。这将转发给IHttpClientFactory,直接使用new解决HttpClient 的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-29
      • 1970-01-01
      • 1970-01-01
      • 2011-06-03
      • 2020-05-10
      • 2011-01-05
      • 2016-07-29
      相关资源
      最近更新 更多