[英]Retrieving the application-wide container in web api
我正在嘗試解決基於異步事件的REST服務所遇到的問題。 我擁有在應用程序中生成事件的服務,並且這些事件是異步處理的。 我遇到的問題是由於autofac的生存期范圍,我的linq to sql數據上下文到那時已被銷毀。
我找到了一個有解決方案的網站,其中涉及到獲得應用程序范圍的容器。 他是這樣的:
var accessor = ((IContainerProviderAccessor) HttpContext.Current.ApplicationInstance);
return accessor.ContainerProvider.ApplicationContainer;
但是,我無法導入IContainerProviderAccessor,它似乎在autofac的mvc集成程序集中。 如何為Web API轉換此代碼。
不再支持IContainerProviderAccessor
。 Autofac現在使用ASP.net MVC的IDependencyResolver
如果要訪問解析器,則可以使用ASP.net MVC的DependencyResolver.Current
屬性。
YourDbContext yourDbContext = DependencyResolver.Current.GetService<YourDbContext>();
另一種解決方案是注入Func<Owned<YourDbContext>>
,它將充當工廠。 每次在API方法中需要DbContext
您都可以調用它,Autofac將實例化一個新方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.