Оказывается, это можно сделать, но это не так заметно, как хотелось бы. Я не думаю, что обнаружил бы это, если бы Мэтт Милнер и Дэйв Клифф не показали мне, как это работает.
Хитрость заключается в том, чтобы добавить второй SendReply для той же операции приема. Этот второй SendReply возвращает переменную типа FaultException, и его цель - помочь определить правильный контракт операции.
При возникновении ошибки либо просто сгенерируйте исключение FaultException, как обычно, уничтожая рабочий процесс, либо верните ошибку и оставьте рабочий процесс нетронутым, и теперь клиент увидит его как таковой.
Обновление: проверьте этот документ на наличие нового документа "Как отправлять и получать ошибки в службах Workflow". Также см. Мой пост в блоге здесь .