WCF net.tcp сервер отключается - как правильно обрабатывать на стороне клиента? - PullRequest
0 голосов
/ 16 июня 2010

Я застрял с немного раздражающей проблемой прямо сейчас. У меня есть приложение Silverlight 4 (которое по умолчанию запускает OOB). Он использует WCF с net.tcp в качестве средства связи с сервером. Клиент использует центральный экземпляр прокси-клиента wcf. Пока все работает на стороне сервера, все в порядке.

Если я уничтожаю сервер в середине всего, я тону в лавине исключений на стороне клиента (потеря соединения, сбой канала и т. Д.).

Теперь я ищу способ справиться с этим чисто и централизованно (если это возможно).

Приложение SL имеет один объект центрального клиента, расположенный в App.cs (общедоступный статический клиент MyClient {get; set;}), который инициализируется при запуске приложения.

Есть идеи, как правильно решать проблемы с подключением к клиентскому объекту?

Ответы [ 2 ]

2 голосов
/ 16 июня 2010

Вы упоминаете, что используете центральный экземпляр клиентского прокси WCF.

Если это так, то при возникновении ошибки сервера прокси перейдетНеисправное состояние.Чтобы сохранить централизованность, вы можете привести клиентский прокси к ICommuicationObject и прикрепить обработчик события к событию Faulted, который заменяет сбойный прокси, новым прокси при возникновении события.

Применяются обычные предупреждения о безопасности потоков для централизованного доступа к ресурсам!

1 голос
/ 16 июня 2010

Я думаю, что нашел работоспособное - хотя и не централизованное - решение. Вместо того, чтобы загромождать код блоками try / catch, кажется, что все, что ему нужно, это нулевая проверка свойства event.Error Если что-то случилось с соединением, это свойство всегда не равно нулю. Исключения возникают только при попытке получить доступ к событию. Результат.

Возможно, это не самое красивое решение, но пока оно работает.

Возможно, есть более элегантный способ ...

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