2015-11-06 56 views
2

我有下面的代码,我使用一个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名注册,加入新的后我基本上是一个,如果我尝试使用相同的范围,以解决该组件,没有任何问题。稍后在执行过程中,当控制器被击中时,范围仍然有18个注册,但不是我添加的注册。是否有可能将注册添加到其他范围?我检查了它,标签确实是“AutofacWebRequest”之一。

谢谢

+0

听起来很正常,你有什么问题吗? :-) –

+0

那么,我预计有19个注册不是18,除非我错过了某些东西,可能就是这样。 – Marco

回答

0

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