Да, это возможно.
Вам нужно изучить класс SoapException и, в частности, свойство Detail класса SoapException.
Класс SoapException будет эффективно отображать « Soap Fault », который является совместимым со стандартом механизмом возврата информации об ошибках клиентам / потребителям из метода веб-службы.
Свойство «Detail» класса SoapException имеет тип XmlNode и может, таким образом, содержать либо один узел / элемент, либо иерархию дочерних узлов. Поэтому узел Detail может легко содержать и выступать в роли «родителя» для сериализованного представления вашего собственного пользовательского объекта ошибки.
Из MSDN:
Свойство Detail предназначено для предоставления подробных сведений об ошибках приложения, связанных с элементом Body запроса SOAP. В соответствии со спецификацией SOAP, если возникает ошибка из-за невозможности обработки клиентского запроса из-за элемента Body запроса SOAP, необходимо установить свойство Detail. Если в записях заголовка запроса SOAP произошла ошибка, необходимо сгенерировать исключение SoapHeaderException, чтобы сведения об ошибке возвращались в заголовке SOAP. Если ошибка не возникла из-за обработки элемента Body, свойство Detail не должно устанавливаться.
При создании XmlNode для свойства Detail можно использовать свойства Name и Namespace для DetailElementName, чтобы обеспечить согласованность [sic] со спецификацией SOAP.
Все непосредственные дочерние элементы элемента detail называются записями подробностей, и каждая запись подробностей кодируется как независимый элемент внутри элемента detail.
Обратите внимание, что если вы хотите, чтобы SOAP-код корректно соответствовал вашим ответам веб-службы, вам необходимо вернуть SoapHeaderException , а не SoapException , если , ошибка возникает в клиенте. Раздел заголовка исходного XML-запроса (это часто может иметь место при использовании пользовательских заголовков SOAP , например, для учетных данных безопасности), как описано выше.