我必须连接到旧版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,因为我连接的服务类型是什么?
答案 0 :(得分:1)
席莫斯,
您可以(理论上)将版本号添加到绑定定义中。
envelopeVersion="None/Soap11/Soap12"
当然,正确的服务价值。
所以看起来更像是:
<basicHttpBinding>
<binding name="LoginServiceSoap"
envelopeVersion="Soap12" />
</basicHttpBinding>
希望这可以帮助您按照自己的方式行事。