我们的MVC应用程序使用HttpClient调用WebAPI操作。我决定要注入的HttpClient使用StructureMap的并覆盖在处置控制器Dispose of 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();
}
但我仍然得到规则违规。
这有帮助。感谢您的输入。如果我在StructureMap中使用“HttpContextScoped”,那么ReleaseAndDisposeAllHttpScopedObjects会起作用吗? – jlembke 2013-05-07 00:13:22
@jlembke - 是的,使用'HttpContextScoped','ReleaseAndDisposeAllHttpScopedObjects'方法可以工作。 – PHeiberg 2013-05-07 10:52:31