Desechar el HttpClient inyectado
Nuestra aplicación MVC llama a una acción WebAPI usando HttpClient. Decidí inyectar el HttpClient usando StructureMap y anular la disposición en el controlador
public HomeController(HttpClient httpClient)
{
_httpClient = httpClient;
}
protected override void Dispose(bool disposing)
{
if (disposing && _httpClient != null)
{
_httpClient.Dispose();
}
base.Dispose(disposing);
}
El StructureMap ObjectInitialize básicamente se ve así.
x.For<HttpClient>().Use(() => new HttpClient() { BaseAddress = "my/uri/"});
Cuando construyo esto, CodeAnalysis se queja"Dispose objects before losing scope"
y apunta al código IoC.
¿Puedo suprimir eso o dónde necesito deshacerme del HttpClient? Yo tambien lo intenté
protected void Application_EndRequest(object sender, EventArgs e)
{
ObjectFactory.ReleaseAndDisposeAllHttpScopedObjects();
}
Pero todavía tengo esa violación de la regla.