我有一个WEB API应用程序,并且我使用UnityContainer作为我的DI。 由于我将UnitOfWork与实体框架一起使用,因此我希望每个请求都在UnityContainer中注册DataContext。 我很失望地发现不存在可以为每个请求提供新范围的LifeTimeManager。深入研究之后,我发现Unity.AspNet.Mvc确实包含PerRequestLifetimeManager。我的问题是:
答案 0 :(得分:1)
- Unity不包含PerRequestLifetimeManager的原因吗?在我看来,这是一个非常普遍的情况 根据请求注册某些内容。
核心库适用于.Net项目。只有Asp.Net会有Request
。
Unity.AspNet.Mvc确实包含特定原因吗? PerRequestLifetimeManager?
与答案相同1.请求是Asp.Net的概念。
我是否需要知道是否在使用Unity.AspNet.Mvc WebApi项目?
不。无论如何,您很可能只会使用PerRequestLifetimeManager。我可以想象,当两个库完全相同时,Unity的开发人员不需要发布Mvc和WebApi包。
在使用线程或任务的情况下,容器如何知道它 属于同一请求?
容器只是另一个对象。 .Net框架管理从请求到请求以及从线程到线程的对象。容器本身在请求开始时创建一个唯一的作用域,并在请求结束时销毁它。.Net在这之间进行所有操作。