Наше приложение MVC вызывает действие WebAPI с использованием HttpClient. Я решил впрыснуть HttpClient с помощью StructureMap и переопределить выбрасывайте в контроллереУтилизация Injected HttpClient
public HomeController(HttpClient httpClient)
{
_httpClient = httpClient;
}
protected override void Dispose(bool disposing)
{
if (disposing && _httpClient != null)
{
_httpClient.Dispose();
}
base.Dispose(disposing);
}
StructureMap ObjectInitialize в основном выглядит следующим образом ..
x.For<HttpClient>().Use(() => new HttpClient() { BaseAddress = "my/uri/"});
Когда я строю это, CodeAnalysis жалуется "Dispose objects before losing scope"
и указывает на IoC код.
Могу ли я подавить это, или где мне нужно избавиться от HttpClient? Я также пробовал
protected void Application_EndRequest(object sender, EventArgs e)
{
ObjectFactory.ReleaseAndDisposeAllHttpScopedObjects();
}
Но я все еще получаю нарушение этого правила.
Это помогло. Спасибо за ваш вклад. Если я использовал «HttpContextScoped» в StructureMap, будет ли ReleaseAndDisposeAllHttpScopedObjects работать? – jlembke
@jlembke - Да, с 'HttpContextScoped' метод' ReleaseAndDisposeAllHttpScopedObjects' будет работать. – PHeiberg