0

BizTalk から .NET クライアントに SOAP エラーを送信しようとしています。BizTalk にはすぐに使用できる障害コントラクトを公開する方法がないため、messageinspector (BeforeSendReply) で障害メッセージを作成しています。

フォールト コントラクトの知識がなくても、BizTalk へのサービス参照を持つ .NET クライアントがあります。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 で機能します。この問題は、ネットの名前付きパイプ バインディングを使用している場合に発生します。この場合の違いは何ですか?

4

1 に答える 1

0

問題は、SOAP ヘッダー "RelatesTo" が障害メッセージに渡されなかったため、クライアントが障害メッセージを受信したときに、それをどう処理すればよいかわかりませんでした。WSHttpBinding は、NetNamedPipeBinding と同じ方法で RelatesTo ヘッダーを使用していないと思いますか?

于 2013-03-26T06:47:48.597 に答える