我們創建了幾個處理異步請求的WCF服務。我們使用的是basicHttpBinding
,因此我們的InstanceContextMode
是PerCall
,這是造成一些混亂的原因。我們看到使用微軟的Unity
容器注入應用程序的部分不尋常行爲。WCF服務中的IoC衝突
我們正在解決下面的參考文獻,以創建在整個應用程序中使用的單個Foo
。但是,當服務被快速連續擊中時,Foo
偶爾會拋出異常,表明它正在被多個線程訪問,並因此導致其狀態以意外的方式更改。
Container.RegisterType<IFoo, Foo>(new ContainerControlledLifetimeManager());
現在,如果我們改變生命週期管理器TransientLifetimeManager
- 實質上是告訴容器注入每一個它的解決時間類的新實例,這個問題被糾正。
Container.RegisterType<IFoo, Foo>(new TransientLifetimeManager());
從我的理解中,WCF不控制的AppDomain的生命週期,主機一樣。在我們的例子中,這是IIS。所以,鑑於這些信息有可能我們的PerCall
WCF請求工作正常,但由於AppDomain的管理方式,我們是否可以訪問相同的注入對象,因爲它的單例實現?
謝謝你的時間!
爲單位的IInstanceProvider行爲中創建或者它以不同的方式注入依賴? – ErnieL