Autofac.Core.DependencyResolutionException:“Circular component dependency detected: des.master.server.Services.MainService -> des.master.server.Services.Hubs.HostService -> des.master.server.Services.Hubs.HubProvider -> des.master.server.Services.ServiceCore -> des.master.server.Services.Hubs.HubProvider.”

以上错误是使用Autofac时遇到的一个错误,大致的意思是使用检测到循环调用。而且报错也把顺序和名称给报出来的,所以只要适当调整他们之间的关系就可以了。循环调用

报错含义

Autofac 抛出 Circular component dependency detected,表示容器在解析依赖时发现 A 依赖 B、B 又(间接)依赖 A,形成环,无法完成构造。

处理方式

  • 用 Lazy<T> 或 Func<T> 延迟获取,打破构造期循环。
  • 把共用逻辑抽到第三个组件中,二者都依赖它。
  • 必要时改用属性注入,并注意生命周期注册(如 InstancePerLifetimeScope)。
  • 重新审视设计:循环依赖往往是职责划分不清的信号。