Entsorgen Sie den injizierten HTTP-Client
Unsere MVC-Anwendung ruft mit HttpClient eine WebAPI-Aktion auf. Ich beschloss, den HttpClient mit StructureMap zu injizieren und im Controller zu entsorgen
public HomeController(HttpClient httpClient)
{
_httpClient = httpClient;
}
protected override void Dispose(bool disposing)
{
if (disposing && _httpClient != null)
{
_httpClient.Dispose();
}
base.Dispose(disposing);
}
Die StructureMap ObjectInitialize sieht im Grunde so aus.
x.For<HttpClient>().Use(() => new HttpClient() { BaseAddress = "my/uri/"});
Wenn ich das baue, beschwert sich CodeAnalysis"Dispose objects before losing scope"
und zeigt auf den IoC-Code.
Kann ich das unterdrücken oder wo muss ich den HttpClient entsorgen? Ich habe es auch versucht
protected void Application_EndRequest(object sender, EventArgs e)
{
ObjectFactory.ReleaseAndDisposeAllHttpScopedObjects();
}
Aber ich bekomme immer noch diese Regelverletzung.