Если вы используете сервис из оркестровки, вы можете попробовать выполнить следующие действия:
Добавьте XSD-представление вашего
FaultContract для проекта и использования
это как тип сообщения по вашей вине
работа.
Добавить блок обработчика исключений в
оркестровка с использованием этой ошибки
операция в качестве типа сообщения
На вашем двустороннем WCF SendPort перейдите на
вкладка Сообщения, а затем на
«Тело входящего сообщения BizTalk»
установите переключатель в положение Path.
В поле «Выражение пути тела» добавить
как то так:
/ * [namespace-uri () = 'http://myservice.namespace/'] | / * [local-name () = 'Fault'] / * [local-name () = 'Detail'] / *
Эти два xpaths разделены знаком '|' заставит адаптер в зависимости от того, что он получает, публиковать либо правильный ответ службы, либо содержимое узла сведений, в котором размещен WCF FaultContract. Это позволит дизассемблеру работать при попытке идентифицировать сообщение.
Побочным эффектом этого является то, что у вас будет проблема с перехватом SOAP-ошибок в оркестровке, но это решается созданием представления схемы SOAP-ошибки (http://schemas.datacontract.org/2004/07/System.ServiceModel#ExceptionDetail) и использованием этого в качестве второго сбоя). работа.