WCF дает мне «Операция не может быть завершена, потому что труба была закрыта». Исключение тайм-аута - PullRequest
0 голосов
/ 05 сентября 2010

У меня есть служба, которая общается с другими службами на той же машине по именованным каналам. Все работает хорошо, если я сначала запускаю службу, но через некоторое время я получаю это исключение:

"Соединение канала было прервано, потому что асинхронное чтение из канала не было завершено в течение выделенного времени ожидания 00:02:00. Время, отведенное для этой операции, могло быть частью более длительного времени ожидания." у которого есть внутреннее исключение, которое говорит: «Операция не может быть завершена, потому что канал был закрыт. Это могло быть вызвано приложением на другом конце канала, выходящего». пока я делаю какие-либо звонки между службами.

Услуги являются частью механизма pub / sub. У меня есть разные клиенты, звонящие в службу, эта служба имеет PerSession instancecontextmode. Клиенты подключаются через привязку netTcp и отправляют keepalive каждые 30 секунд, чтобы поддерживать свой сеанс tcp, чтобы служба могла выполнять обратные вызовы для клиентов. Затем у меня есть другой сервис, который представляет собой одноэлементный сервис, к которому все другие экземпляры сервиса подключаются через привязку именованных каналов, и целью этой второй привязки является маршрутизация событий. Я боюсь, что архитектура может иметь какое-то отношение к моей проблеме здесь.

1 Ответ

0 голосов
/ 06 сентября 2010

Я произвел рефакторинг всего кода в отдельной библиотеке PubSub, поэтому у меня есть общая структура для обработки pub / sub через wcf.После рефакторинга ошибка больше не отображается?

Перед рефакторингом я заметил, что у меня возникает исключение только при подключенном отладчике.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...