Если вы используете одностороннюю операцию, вы не знаете, вызвало ли это исключение в службе. Необработанное исключение на сервисе всегда приводит к неисправности канала. Если для InstanceContextMode
установлено значение PerSession
, это приводит к сбою сеансового канала и удалению экземпляра службы. Из-за того, что клиент природы не будет знать об этом, следующий вызов службы с того же клиентского прокси завершится с исключением (канал неисправен ...). Клиент сможет только позвонить на прокси Abort
, но не узнает об этом. Экземпляр IMO Single
с включенным сеансом будет вести себя очень похоже, за исключением того, что он не будет располагать экземпляром службы.
Это не произойдет с PerCall
экземплярами, потому что для каждого вызова используется стек каналов для обработки одного запроса. Как указано в комментарии, это будет происходить и при PerCall
экземпляре из-за сбоя сеансового канала.