簡體   English   中英

在Web API中檢索應用程序范圍的容器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM