2015-11-06 32 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

事實證明,這是一個愚蠢的錯誤。在這個對象中,所有屬性都被注入,在其中一個屬性中,我在做一些其他工作,這些工作依賴於其他屬性被注入,但由於並非所有屬性都在同一時間注入,而一個屬性被注入設置仍然爲空的另一個。

相關問題