添加新组件将删除所有组件的现有注册
本文关键字:组件 注册 删除 新组件 添加 | 更新日期: 2023-09-27 18:20:57
我在Web API DelegatingHandler 中使用了以下代码
var registration = RegistrationBuilder
.ForDelegate((c, p) => sessionData)
.ExternallyOwned()
.AsSelf()
.InstancePerRequest()
.CreateRegistration();
var componentRegistry = ((AutofacWebApiDependencyScope) request.GetDependencyScope()).LifetimeScope.ComponentRegistry;
componentRegistry.Register(registration, true);
在注册之前,我注册了几个组件,但在添加新组件之后,所有其他注册都不存在了,只有我添加的组件存在。有人知道为什么会发生这种事吗?我查看了Autofac代码,找不到发生这种情况的原因,但可能我遗漏了一些明显的东西。
更新1
因此,经过更多的挖掘,最初我有18个注册,添加新的注册后,我基本上就有了那个注册,如果我尝试使用相同的范围来解决那个组件,就没有任何问题。稍后在执行过程中,当Controller被命中时,作用域仍然有18个注册,但不是我添加的那个。我有可能将注册添加到不同的范围吗?!我检查了一下,标签确实是"AutofacWebRequest"。
感谢
事实证明,这是一个愚蠢的错误。在这个对象中,所有属性都被注入,在其中一个对象中,在"集合"中,我正在做一些其他工作,这些工作依赖于被注入的其他属性,但由于不是所有属性都同时被注入,当一个属性被设置时,另一个属性仍然为空。