Почему служба InstanceContextMode.Single удаляет синглтон при закрытии?

У меня есть служба WCF (4.0), оформленная как InstanceContextMode.Single, и класс, реализующий службу, следует шаблону Singleton.

Сначала я создаю одноэлементный экземпляр моей реализации службы с атрибутом Instance. Затем я передаю этот единственный экземпляр конструктору ServiceHost, а не использую конструктор с аргументом typeof().

Я могу сделать Open() на сервисе, затем я могу сделать Close(), и все в порядке. Но, по-видимому, в Close() он каким-то образом удаляет мой синглтон (???), потому что, когда я снова пытаюсь открыть() на том же ServiceHost, возникает исключение ObjectDisposedException.

Моя служба размещена с помощью NetTcpBInding в приложении Windows Form.


person Lord of Scripts    schedule 21.01.2013    source источник


Ответы (1)


Повторное открытие того же ServiceHost не поддерживается. Вам нужно создать новый ServiceHost.

ServiceHost реализует конечный автомат ICommunicationObject. Из Общие сведения об изменениях состояния:

В закрытом состоянии объект по существу достиг конца конечного автомата. Как только объект переходит из одного состояния в другое, он не возвращается в предыдущее состояние.

person ErnieL    schedule 22.01.2013