我一直在研究 .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 SOFTWARE和HttpClientHandler/HttpClient Memory Leak。
但是,我不确定如何从 WebAPI 本身中设置 HttpClient 的共享“单个”实例?