Я обычно использую Вариант 2 (ошибки мыла, WCF FaultContracts), затем я выполняю внутреннюю службу, где я знаю, что клиент также является WCF, и я могу убедиться, что FaultExceptions обрабатывается правильно.
Когда яЯ делаю внешнюю / ориентированную на клиента услугу, я обычно использую опцию 1, разделяя мое сообщение на «заголовок» и «тело», и заголовок содержит сообщение об ошибке.Я нахожу, что это легче понять другим людям, когда они рассказывают им, как использовать ваш веб-сервис, и проще для пользователей, не являющихся пользователями WCF.
На самом деле оба способа хороши, поскольку любой достойный инструмент SOAP для любого языка долженобрабатывать ошибки SOAP, но вы никогда не знаете ...