根据 Microsoft 的说法,HttpClient 的最佳实践是维护 HttpClient 的单例版本(释义,但这是结果。不要立即处理它)。我自己的测试表明,与为每条消息重新创建 HttpClient 相比,在执行大量 Http 操作时,单个实例具有明显的优势。因此,自然地,将 HttpClient 放在 DI 容器中是有意义的。
// Initialize the HTTP client.
HttpClient httpClient = new HttpClient();
httpClient.Timeout = Timeout.Infinite;
httpClient.BaseAddress = new Uri("https://localhost");
serviceCollection.AddSingleton(httpClient);
问题是我收到来自 StyleCop 的警告:CA2000: Dispose objects before lost scope。 显然我可以压制,但这让我很困扰,因为还有其他 IDisposable 对象可能想要放入 DI 容器中。使用 DI 模式时,此警告是否有效?处理它有什么技巧吗?