添加新组件将删除所有组件的现有注册

本文关键字:组件 注册 删除 新组件 添加 | 更新日期: 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"。

感谢

添加新组件将删除所有组件的现有注册

事实证明,这是一个愚蠢的错误。在这个对象中,所有属性都被注入,在其中一个对象中,在"集合"中,我正在做一些其他工作,这些工作依赖于被注入的其他属性,但由于不是所有属性都同时被注入,当一个属性被设置时,另一个属性仍然为空。