В каких случаях происходит сбой прокси WCF?

2

Я хочу знать, в каких случаях прокси-сервер WCF (сгенерированный vs2008 или svcutil) становится неисправным (состояние ошибки)? поэтому я могу воссоздать новый экземпляр и избежать использования неисправного.

В настоящее время я обрабатываю TimeoutException, FaultException, CommunicationObjectAbortedException

            try
            {
                client.Method1(args);
            }
            catch (TimeoutException)
            {
                client.Abort();
                ReCreate();
            }
            catch (FaultException)
            {
                client.Abort();
                ReCreate();
            }
            catch (CommunicationObjectAbortedException)
            {
                client.Abort();
                ReCreate();
            }

Я думаю, что я могу избежать всех этих типов и обрабатывать только родительское CommunicationException, достаточно ли этого? Мне нужны комментарии

Теги:
wcf
fault-tolerance

2 ответа

2

Любое неперехваченное исключение на стороне сервера, которое не обрабатывается и не преобразуется в FaultException или FaultException<T>, скорее всего, приведет к повреждению вашего канала. В сценарии для каждого вызова или одностороннем сценарии вам часто не очень важно, чтобы канал был скомпрометирован, но в сценарии на основе сеанса вы определенно будете!

Лучше всего попытаться поймать все исключения на стороне сервера и либо просто подавить их (зарегистрировать их на сервере и ничего не делать), либо вернуть их клиенту с помощью FaultException.

Чтобы это сделать, ваша реализация службы также должна реализовать интерфейс IErrorHandler, который позволяет вам делать именно это - поймать все исключения и либо протоколирование, либо подавление их, либо преобразование их в ошибки SOAP.

Марк

  • 0
    В случае ожидаемых исключений, таких как (UnauthorizedAccessException или любые другие), которые выдает сервер, он будет ошибкой сеанса, и клиент должен принять это !!
  • 0
    Да, в некоторых случаях вы захотите распространить исключение на клиент - но это скорее исключение, чем правило
0

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

Еще одна вещь, о которой нужно помнить, - это то, что ошибка связана с сеансами WCF. Если вам не нужны сеансы WCF, обязательно отключите их, и вы предотвратите целый ряд возможных проблем.

  • 0
    «Прокси-объект WCF может стать неисправным из-за какого-либо исключения, кроме faultException» Вы имеете в виду универсальное исключение FaultException <T>, которое украшает методы службы?
  • 0
    для «любого исключения» это означает, что у службы есть что-то вроде «throw new Exception ();»; что будет вина сессии?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню