Web参考有效,但服务参考抱怨Soap版本

时间:2013-03-13 21:31:45

标签: c# visual-studio-2012 asmx service-reference web-reference

我必须连接到旧版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。我假设我在上面的配置中有问题。

或者我被迫使用Web Reference,因为我连接的服务类型是什么?

1 个答案:

答案 0 :(得分:1)

席莫斯,

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

envelopeVersion="None/Soap11/Soap12"

当然,正确的服务价值。

所以看起来更像是:

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

希望这可以帮助您按照自己的方式行事。