2

根据 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 模式时,此警告是否有效?处理它有什么技巧吗?

4

1 回答 1

1

同样的问题,同样的想法。

您可以做的是将其分配给一个字段

例如 this.httpClient = new HttpClient();

无论如何,这对于单身人士来说可能不是一个坏主意,因此他们是 IOC 之外的明确所有者。

于 2019-10-22T03:20:27.023 回答