ASP 网络核心依赖注入 - 处置

ASP Net Core Dependency Injection - dispose

根据 Microsoft 的文档,IOC Container 负责清理它创建的类型并在 IDisposable 接口上调用 Dispose https://docs.microsoft.com/en-us/dotnet/core/extensions/dependency-injection-guidelines#:~:text=Disposal%20of%20services -> 那么当在注入对象的 context 中生成接口时,容器是否也会在 IDisposable 接口上调用 Dispose?

例如: 在 startup.cs:

services.AddhttpClient<CustomClient>(c => {
c.BaseAddress = new Uri(Configuration["Endpoint"]);
c.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));});

在这种情况下,CustomClient 将由 IOC Container 释放,开发者不需要调用释放。

在自定义客户端中:

var request = new HttpRequestMessage(HttpMethod.Get, $"api/users/{email}");
HttpResponseMessage httpResponse = await  
httpClient.SendAsync(request).ConfigureAwait(false);

HttpResponseMessage 实现 IDisposable,我需要使用 using HttpResponseMessage httpResponse = await httpClient.SendAsync(request).ConfigureAwait(false); 所以 dispose 会被调用,还是这个资源也被容器处理了?

is this resource also disposed by the container?

容器只处理向提供者注册并由提供者创建的实例。在这种情况下,HttpResponseMessageHttpClient 创建,应由您的代码处理。