我正在尝试在 aspnetcore2.2 项目中实现健康检查,该项目断言我的 Lamar 容器配置是有效的IContainer.AssertConfigurationIsValid(本质上它可以构造所有依赖项)。
一些服务(我无法控制)取决于Microsoft.Extensions.DependencyInjection.IServiceScopeFactory. Lamar 无法注入任何这些依赖项,当这些服务无法构建时,断言失败。
该堆栈是一个 ASP.NET Core 2.2 应用程序,使用 Lamar 作为默认 IoC 框架(通过推荐的.UseLamar()扩展方法),其他一切正常。
任何注射ServiceScopeFactory(任何地方)都失败了
System.InvalidOperationException: Frame type Lamar.IoC.Resolvers.CastRootScopeFrame does not implement IResolverFrame
at Lamar.IoC.Instances.FuncResolverDefinition.BuildResolver()
at Lamar.IoC.Instances.GeneratedInstance.BuildFuncResolver(Scope scope)
at Lamar.IoC.Instances.GeneratedInstance.buildResolver(Scope scope)
at Lamar.IoC.Instances.GeneratedInstance.ToResolver(Scope topScope)
at Lamar.IoC.Instances.ConstructorInstance.ToResolver(Scope topScope)
at Lamar.ServiceGraph.FindResolver(Type serviceType)
at Lamar.IoC.Scope.TryGetInstance(Type serviceType)
at Lamar.IoC.Scope.GetService(Type serviceType)
(...)
为什么不能用 Lamar 注入这种特殊的依赖关系?