1

WSDL を持っていない自分の管理下にないリモート エンドポイントがありますが、SOAP メッセージのサンプルはあります。はさみで遊んだり、手で石鹸の封筒を作ったりしたくないので、(WCF クライアントで使用されると) 必要な SOAP 要求を生成し、応答を解析するサービス/データ コントラクトを作成することを考えました。各エンベロープのヘッダーにアクション アドレスが含まれているように見えるという事実で、最初の方法ですぐに問題が発生しました。

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
  <s:Header>
    <Action s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">urn:IService1/Auth</Action>
  </s:Header>
  <s:Body>
    <Auth>
      <login xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
        <Password i:nil="true" />
        <userName i:nil="true" />
      </login>
    </Auth>
  </s:Body>
</s:Envelope>

これは、私のメッセージにひどく反対する呼び出し先を台無しにします。さまざまな構成アプローチを試しました (web.config を使用してモック サービスとクライアントを構成します) が、この煩わしい Action ノードを削除するものは何もないようです。私がやりたくないことをせずにこれを解決する方法(XMLを手で遊ぶ)

4

1 に答える 1

1

Force parameter as Service contract attributeで説明されているように、私の問題は解決されました。XML フォーマッターに切り替えたら、Action ヘッダーが生成されなくなりました。ただし、誰かが DataContract クラスでそれを削除する方法を知っている場合は、遠慮なく見せてください。きっと役立つでしょう。

于 2015-02-09T17:11:27.517 に答える