#c# #wcf
#c# #wcf
Вопрос:
Я пытаюсь выяснить, как открывать и закрывать объект ServiceHost несколько раз в самостоятельном приложении WCF:
что я сделал: 1. создайте объект ServiceHost
- вызов Open()
- вызов Closed() пока все хорошо.
- снова вызовите Open(), исключение: невозможно получить доступ к удаленному объекту, что связано с удалением CommunicationObject , имеет смысл.
Как я могу снова открыть ServiceHost в этом случае, не воссоздавая этот объект снова (скорее, я бы воссоздал CommunicationObject, если это возможно).
Заранее спасибо.
Комментарии:
1. Почему вам нужно закрыть хост службы, а затем снова открыть его? Почему возникает отвращение к созданию другого экземпляра хоста службы?
2. потому что во время жизни приложения я хочу управлять servicehose в зависимости от режима, в котором он находится. Конечно, у приложения есть и другие задачи, служба wcf является лишь ее частью. Мне кажется, что ошибка только в CommunicationObject нет причин воссоздавать весь servicehost только из-за этого
Ответ №1:
ServiceHost наследуется от CommunicationObject . ServiceHost — это объект CommunicationObject, вызывающий исключение. Как только CommunicationObject закрыт, он не может быть открыт повторно. Вам нужно будет создать новый ServiceHost.
Конечный автомат CommunicationState:
Каждый объект начинается в созданном состоянии и продолжается в одностороннем порядке через состояния открытия, открытия, закрытия и закрытия.
Комментарии:
1. ServiceHost наследует от ServiceHostBase, мне кажется, CommunicationObject — это композиция, а не наследование.
2. А родительской базой ServceHostBase является System. ServiceModel. Каналы. CommunicationObject поэтому он не является членом
Ответ №2:
Я не уверен, какова ваша конечная цель, но взгляните на эту статью. http://www.codeproject.com/KB/WCF/generic_wcf_host.aspx Если это не та проблема, которую вы пытаетесь решить, то, может быть, некоторые технические и прикладные области — это то, что вы ищете?