Я пытаюсь отправить ошибку мыла из BizTalk в .NET-клиент. BizTalk не имеет в своем распоряжении способ разоблачения контрактов на неисправность, поэтому я создаю сообщение о неисправности в messageinspector (BeforeSendReply)Невозможно получить ошибку SOAP из службы WCF
У меня есть клиент .NET, который имеет служебную ссылку на BizTalk без каких-либо знаний о контракте на неисправность , Служба BizTalk WCF настроена на получение запроса и возврат ошибки (для тестирования).
Когда клиент получает ошибку от BizTalk, я получаю: «Сервер не дал значимого ответа, это может быть вызвано несоответствием контракта, преждевременным отключением сеанса или внутренней ошибкой сервера».
Когда я включаю отслеживание сообщений, могу сказать, что сообщение об ошибке действительно отслеживается на уровне транспорта.
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing">
<s:Header>
<a:To s:mustUnderstand="1">http://www.w3.org/2005/08/addressing/anonymous</a:To>
</s:Header>
<s:Body>
<s:Fault>
<s:Code>
<s:Value>s:Client</s:Value>
</s:Code>
<s:Reason>
<s:Text xml:lang="en-US">BTSError</s:Text>
</s:Reason>
<s:Detail><DaxFaultContract xmlns="http://MyNamespace">
<ErrorCode>1</ErrorCode>
<ErrorText>This is an exception</ErrorText>
</DaxFaultContract></s:Detail>
</s:Fault>
</s:Body>
</s:Envelope>
Я подумал, что даже без каких-либо знаний о DaxFaultContract клиент сможет бросить нетипизированное FaultException.
Что я пропустил?
EDIT:
Это на самом деле работает для WSHttpBinding. Проблема возникает при использовании привязки net named pipe. В чем разница в этом случае?