我必须连接到旧版 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 参考?