WCF ловит ошибки исключения типа T или базового типа - PullRequest
6 голосов
/ 08 февраля 2010

У нас есть система со слоем WCF.

Службы WCF могут выдавать различные исключения FaultException, это исключения типа:

FaultException<MyStronglyTypedException>

Все исключения строго типов наследуются от базового исключения.

public class MyStronglyTypedException : MyBaseException

Я могу поймать FaultException, но тогда у меня нет доступа к свойству Detail FaultException.

Я хотел бы поймать:

FaultException<MyBaseException>

Но это не представляется возможным.

Есть ли способ получить доступ к свойству Detail FaultException без перехвата каждого отдельного строго типизированного исключения?

Ответы [ 2 ]

5 голосов
/ 09 февраля 2010

Если вы хотите иметь возможность перехватить строго типизированный FaultException<MyBaseException> в своем клиентском коде, вы должны украсить свой метод обслуживания атрибутом FaultContract для этого типа:

[ServiceContract]
interface IYourService
{
   [OperationContract]
   [FaultContract(typeof(MyBaseException))]
   ResponseType DoSomethingUsefulHere(RequestType request);
}

Если вы этого не сделаете«объявив» те конкретные типы, для которых вы хотите перехватить строго типизированные FaultContract<T> исключения, WCF преобразует все ошибки на стороне сервера в FaultContract экземпляры общего назначения.

1 голос
/ 08 февраля 2010

У вас нет проверенного и проверенного ответа, но эта ссылка может быть полезной:

Обработка исключений в WCF с использованием Fault Contract

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