0

レガシー Web サービスに接続する必要があります。

Visual Studio で [サービス参照の追加] を実行する場合は、サーバー上の WSDL ファイルの URL を入力します。私のサービスが表示され、それに対してコードを書きます。しかし、コードを実行すると、次のエラーが発生します。

System.ServiceModel.CommunicationException: 受信メッセージ (Soap12 ( http://www.w3.org/2003/05/soap-envelope )) のエンベロープ バージョンが、エンコーダー (Soap11 ( http://schemas ) のエンベロープ バージョンと一致しません。 .xmlsoap.org/soap/envelope/ )))。予想されるメッセージと同じバージョンでバインドが構成されていることを確認してください。

私の app.config は次のようになります。

  <system.serviceModel>
        <bindings>
            <basicHttpBinding>
                <binding name="LoginServiceSoap" />
            </basicHttpBinding>
        </bindings>
        <client>
            <endpoint address="http://server/Service.asmx" binding="basicHttpBinding"
                bindingConfiguration="LoginServiceSoap" contract="Stuff.Login.LoginServiceSoap"
                name="LoginServiceSoap" />
        </client>
    </system.serviceModel>

ただし、「Web 参照」を追加すると、サービスとうまく通信できます。しかし、私の理解では、WebReferences の代わりに Service References を使用することになっています。上記の設定に何か問題があると思います。

または、接続しているサービスの種類のために、Web 参照を使用する必要がありますか?

4

1 に答える 1

1

シーマス、

(理論的には) バージョン番号をバインディング定義に追加できます。

envelopeVersion="None/Soap11/Soap12"

もちろん、あなたのサービスにふさわしい価値があります。

したがって、次のようになります。

<basicHttpBinding>
    <binding name="LoginServiceSoap"
             envelopeVersion="Soap12" />
</basicHttpBinding>

これがあなたのやり方で物事を行うのに役立つことを願っています.

于 2014-10-29T18:31:39.763 に答える