Web Reference可以工作,但是Service Reference抱怨Soap版本

本文关键字:Reference Service 抱怨 版本 但是 Soap 工作 Web | 更新日期: 2023-09-27 18:03:51

我必须连接到一个遗留的web服务。

在visual studio中,如果我执行添加服务引用,则输入服务器上WSDL文件的url。我的服务出现了,我编写了针对它的代码。但是当我运行代码时,我得到了这个错误:

System.ServiceModel。的信封版本传入消息(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引用",我就能够与服务进行良好的通信。但我的理解是,我现在应该使用服务引用,而不是webrereferences。我假设我在上面的配置中有错误。

还是因为我所连接的服务类型而被迫使用Web引用?

Web Reference可以工作,但是Service Reference抱怨Soap版本

Sheamus,

您可以(理论上)将版本号添加到绑定定义中。

envelopeVersion="None/Soap11/Soap12"

当然,要有合适的服务价值。

所以它看起来更像:

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