我正嘗試從BizTalk向.NET客戶端發送SOAP錯誤。 BizTalk沒有開箱即用的方式公開錯誤契約,所以我在messageinspector中創建了錯誤消息(BeforeSendReply)無法從WCF服務接收SOAP錯誤
我有一個.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。
我錯過了什麼?
編輯:
這實際上適用於WSHttpBinding。使用網絡命名管道綁定時會發生此問題。這種情況有什麼區別?