Обработка исключений приложения WPF с помощью службы WCF - PullRequest
3 голосов
/ 19 декабря 2011

У меня есть служба WCF, которая общается с БД.Все операции проходят через сервис.Каков наилучший способ вернуть исключение клиенту (в данном случае приложение WPF).

Допустим, у меня есть сервис GetCustomer, который возвращает список клиентов.Но это было исключение.Как я должен вернуть это исключение клиенту?

Ответы [ 2 ]

3 голосов
/ 20 декабря 2011

Microsoft рекомендует реализовать IErrorHandler для исключений WCF

Чтобы явно контролировать поведение приложения, когда исключение, реализовать интерфейс IErrorHandler и добавить его в свойство ErrorHandlers. IErrorHandler позволяет вам явно управлять сгенерированной ошибкой SOAP, решить, отправлять ли ее обратно клиент и выполнять связанные задачи, такие как ведение журнала. Ошибка обработчики вызываются в том порядке, в котором они были добавлены в Свойство ErrorHandlers.

Реализуйте метод ProvideFault для управления сообщением об ошибке, которое возвращается клиенту.

Реализация метода HandleError для обеспечения поведения, связанного с ошибками, включая регистрацию ошибок, обеспечение быстрого сбоя, выключение приложение и т. д.

Здесь - лучший образец, чем MSDN

IMyService proxy = ...;    //Get proxy from somewhere
try {
    proxy.MyMethod();
}
catch (CommunicationException) { ... }
catch (TimeoutException) { ... }
catch (FaultException<MyApplicationFault> myFault) {
    MyApplicationFault detail = myFault.Detail;
    //Do something with the actual fault
}
catch (FaultException otherFault) { ... }
0 голосов
/ 20 декабря 2011

Один из способов сделать это состоит в том, чтобы информация о любых возможных исключениях была частью вашего контракта на обслуживание.Итак, в вашем примере GetCustomer возвращает ваш список клиентов.но он также возвращает потенциально пустой набор данных обо всех возникших исключениях.Это хорошая идея, потому что не каждый потребитель вашей службы будет приложением .NET, поэтому полагаться на отправку ошибок .NET нецелесообразно.

...