【发布时间】:2018-12-14 03:56:45
【问题描述】:
我有一个问题,我有一个有 2 个 AutoFac 容器的无状态服务
我的容器中有一个 PriceService 实例,它是由 Program.cs 的 Main 方法创建的
在我的 Startup.cs 中创建了第二个容器(这是不可避免的,因为为 Web API 设置 AutoFac 需要不同的逻辑)
这给我带来了一个问题,因为当我去解析 IPriceService 时,我得到了一个不包含数据的服务,因为 Startup 创建了一个新实例
我已经了解了如何将 2 个容器合并在一起,但是如何获取在我的 Program.cs Main 方法中创建的容器?
如果我能得到它,我计划创建一个不包含 IPriceService 的新容器,然后将我的 PriceService 从 ServiceFabric 容器添加到我的容器中,以供 Web API 端使用
有人试过这样的吗?
额外信息
我的容器一直是在 Program.cs 的 Main 方法中创建的
我不能有 1 个容器,因为要将 AutoFac 用于 MVC/控制器,您需要集成仅在启动类中可用的服务
没有在正确的时间调用启动类,因此无法将这些额外信息放入我的主容器中
补充说明 我认为这里的实际问题可能有点不同,我在注册控制器时调用了 InstancePerCall。这反过来似乎创建了我的服务的一个新实例,而不是使用现有的。所以也许我的问题应该是如何避免这种情况?我不能将 SingleInstance 用于控制器吗?
【问题讨论】:
-
只有一个容器会更容易。你能解释一下为什么你需要 2 个容器吗?我想这是可以避免的
-
添加了额外信息
-
@保罗。抱歉,如果我错过了您的用例,但它似乎与 CoherentSolutions.Extensions.Hosting.ServiceFabric 的功能之一非常相似。你能在hierarchical dependency injection 文档中找到战利品吗?
标签: c# autofac azure-service-fabric