Tal*_*umy 5 c# dependency-injection unity-container asp.net-web-api asp.net-web-api2
我有一个 WEB API 应用程序,并且使用 UnityContainer 作为我的 DI。由于我将 UnitOfWork 与实体框架结合使用,因此我想在每个请求的 UnityContainer 中注册 DataContext。我很失望地发现没有 LifeTimeManager 可以为每个请求提供新的范围。经过进一步挖掘,我发现 Unity.AspNet.Mvc 确实包含一个 PerRequestLifetimeManager。我的问题是:
- Unity 不包含 PerRequestLifetimeManager 是否有原因?在我看来,根据请求注册某些内容是很常见的情况。
核心库适用于.Net 项目。只有 Asp.Net 才会有Request.
Unity.AspNet.Mvc 包含 PerRequestLifetimeManager 是否有特殊原因?
与答案 1 相同。请求是一个 Asp.Net 概念。
如果我在 WebApi 项目中使用 Unity.AspNet.Mvc,有什么需要了解的吗?
没有。无论如何,您很可能只使用 PerRequestLifetimeManager。我想,当两个库相同时,Unity 开发人员认为没有必要发布 Mvc 和 WebApi 包。
如果使用线程或任务,容器如何知道它属于同一个请求?
容器只是另一个对象。.Net 框架管理从请求到请求、从线程到线程的对象。容器本身在请求开始时创建一个唯一的作用域,并在请求结束时销毁它。.Net 执行其间的所有操作。