gpt4 book ai didi

c# - Web Api 中的 Unity Container PerRequestLifetimeManager

转载 作者:太空宇宙 更新时间:2023-11-03 12:12:12 28 4
gpt4 key购买 nike

我有一个 WEB API 应用程序,我使用 UnityContainer 作为我的 DI。由于我将 UnitOfWork 与 Entity Framework 一起使用,因此我想在每个请求的 UnityContainer 中注册 DataContext。我很失望地发现没有 LifeTimeManager 可以为我的每个请求提供一个新的范围。进一步挖掘后,我发现 Unity.AspNet.Mvc 确实包含一个 PerRequestLifetimeManager。我的问题是:

  1. Unity 不包含 PerRequestLifetimeManager 有什么原因吗?在我看来,根据请求注册一些东西是很常见的情况。
  2. Unity.AspNet.Mvc 包含 PerRequestLifetimeManager 是否有特殊原因?
  3. 如果我在 WebApi 项目中使用 Unity.AspNet.Mvc,我需要知道什么吗?
  4. 在使用 Thread 或 Tasks 的情况下,容器如何知道它属于同一个请求?

最佳答案

  1. Is there a reason why Unity doesn't contain a PerRequestLifetimeManager? It seems to me that is a very common case to register something per request.

核心库用于 .Net 项目。只有 Asp.Net 会有一个 Request

Is there a particular reason why Unity.AspNet.Mvc does contain PerRequestLifetimeManager?

与答案 1 相同。请求是一个 Asp.Net 概念。

Is there something I need to know if I am using Unity.AspNet.Mvc in a WebApi project?

没有。无论如何,您很可能只会使用 PerRequestLifetimeManager。我想当这两个库完全相同时,Unity 的开发人员认为没有必要发布 Mvc 和 WebApi 包。

In case of using Thread or Tasks, how does the container knows it belongs to the same request?

容器只是另一个对象。 .Net 框架从请求到请求和从线程到线程管理对象。容器本身在请求开始时创建一个唯一的范围,并在请求结束时销毁它。Net 在这两者之间做所有事情。

关于c# - Web Api 中的 Unity Container PerRequestLifetimeManager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51578986/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com