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引用?
Sheamus,
您可以(理论上)将版本号添加到绑定定义中。
envelopeVersion="None/Soap11/Soap12"
当然,要有合适的服务价值。
所以它看起来更像:
<basicHttpBinding>
<binding name="LoginServiceSoap"
envelopeVersion="Soap12" />
</basicHttpBinding>