WCF Catch Asynch Exception - PullRequest
       7

WCF Catch Asynch Exception

3 голосов
/ 26 апреля 2011

У меня есть ситуация, в которой я ищу совет.

У меня есть служба WCF, в которой в некоторых методах я создаю объект, который, в свою очередь, устанавливает сокет-соединение с сервером.Я "кэширую" эти объекты соединения в объекте словаря, который является "глобальным" для моего класса обслуживания.Как только эти соединения установлены, с каждым из них связывается таймер, и обратный вызов таймера регулярно отправляет на сервер сообщение keep-alive.

Проблема возникает, если по какой-либо причине разрывается соединение с сервером.Когда это происходит, я получаю необработанное исключение, которое, кажется, убивает службу WCF.

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

1 Ответ

0 голосов
/ 26 апреля 2011

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

в любом случае, получение исключения при использовании разорванного соединения не должно приводить к необработанному исключению из службы WCF, вам следует заключить доступ к диспетчеру соединений в предложения try-catch.

Приветствия

Гилад

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