0

我有一個裝飾爲InstanceContextMode.Single的WCF(4.0)服務,並且實現該服務的類遵循Singleton模式。爲什麼InstanceContextMode.Single服務在關閉時處理單例?

我首先使用Instance屬性創建服務實現的單例實例。然後,我將這個單實例傳遞給ServiceHost的構造函數,而不是使用帶typeof()參數的構造函數。

我可以在服務上打開(),然後我可以做Close()並且一切正常。但顯然在Close()它以某種方式處置我的單身(???),因爲當我在同一個ServiceHost上再次嘗試Open()時,ObjectDisposedException被拋出。

我的服務在Windows窗體應用程序中使用NetTcpBInding進行託管。

回答

0

不支持重新打開相同的ServiceHost。您需要創建一個新的ServiceHost。

ServiceHost實現ICommunicationObject狀態機。從Understanding State Changes

當處於關閉狀態時,對象已基本到達狀態機的末尾 。一旦對象從下一個狀態轉換到 ,它就不會回到先前的狀態。

相關問題