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

  • не отправлять клиенту вообще никакой информации об ошибке;
  • заменить полученный exception на SOAP Fault;
  • заменить полученный Fault на любой другой;
  • записать некоторые данные в журнал;
  • выполнить любые другие действия.

Исключения выставляют ряд ограничений и возможных рисков безопасности:

  • они зависимы от платформы/технологии;
  • исключения могут вызвать плотную связь между клиентами и сервисом (Клиенты должны знать, какие исключения могут быть вызваны каждой операцией);
  • исключения могут выдать клиентам подробности реализации сервиса;
  • исключения могут выдать частную и личную информацию;
  • исключения и иерархии исключений тяжело представимы с помощью метаданных.

Поэтому требуется связать исключения на сервисе с их эквивалентом на клиенте.

Это легко реализовать с помощью SOAP Faults. Особенно это интересно тем, что исключения, которые получают клиенты WCF, представлены как FaultException.