【问题标题】:Using HttpClient to make a call within a Web API使用 HttpClient 在 Web API 中进行调用
【发布时间】:2017-10-04 00:45:01
【问题描述】:

我一直在从事 .NET 4.6.1 Web API 项目。作为该项目的一部分,我需要调用另一个 Web API,并且我想使用 HttpClient 来执行此操作。

根据我的在线研究,您不能仅仅依靠在 using 子句中执行普通的 HttpClient,因为它不能正确地进行垃圾收集并且可能导致内存泄漏。

例如,我目前使用如下:

using (HttpClient client = new HttpClient { Timeout = TimeSpan.FromSeconds(CONTENTFUL_TIMEOUT_IN_SECONDS) } )
{
    responseText = await client.GetStringAsync(uri).ConfigureAwait(continueOnCapturedContext:false);
}

但正如 Stack Overflow 和其他人的其他文章中所建议的那样,这会导致内存泄漏,解决此问题的方法是共享 HttpClient 的单个实例。 例如,检查HTTPCLIENT DESTABILIZING YOUR SOFTWAREHttpClientHandler/HttpClient Memory Leak

但我不确定如何从 WebAPI 本身中设置 HttpClient 的共享“单一”实例?

【问题讨论】:

    标签: asp.net-web-api httpclient dotnet-httpclient webapi


    【解决方案1】:

    你应该看看如何实现单例模式。参考this

    然后,您可以创建一个 HttpClient 单例,并让它负责来自您的 API 的所有 HTTP 调用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-10
      • 1970-01-01
      • 2020-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-04
      • 1970-01-01
      相关资源
      最近更新 更多