2

古いASMXWebサービスと通信できるサードパーティのSOAPクライアントが1つあります。

問題はWCFサービスにあります。

私のWCFサービスはこのクライアントから問題なくメッセージを受信しますが、クライアントは私のWCF応答を好みません。

私のテストWCFサービスは、次の応答を送信します。

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
 <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <testResponse xmlns="http://www.tempuri.org">
   <testResult>randomStringData</testResult>
  </testResponse>
 </s:Body>
</s:Envelope>

しかし、古いSOAPクライアントはこの種の応答(ASMXサービス)を期待しています。

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
 <soap:Body>
  <testResponse xmlns="http://tempuri.org/">
   <testResult>randomStringData</testResult>
  </testResponse>
 </soap:Body>
</soap:Envelope>

私はクライアントを制御できません。ASMXサービスとまったく同じメッセージを送信するようにWCFを構成する方法はありますか?

私のWCFサービスは次のバインディングを使用しています。

<customBinding>
    <binding name="soap11">
      <textMessageEncoding messageVersion="Soap11" writeEncoding="utf-8"></textMessageEncoding>
      <httpTransport></httpTransport>
    </binding>
  </customBinding>
4

1 に答える 1

2

カスタム メッセージ インスペクターと BeforeSendReply メソッドを使用して、プレフィックスの問題を解決することができました。

http://msdn.microsoft.com/en-us/library/system.servicemodel.dispatcher.idispatchmessageinspector.beforesendreply.aspx

PS もう 1 つの優れた方法は、あらゆる種類のメッセージ微調整魔法に対する AfterReceiveRequest です。

于 2012-11-24T21:59:11.473 に答える