最近在我的所有新的Web应用程序中,我一直在添加Web服务作为服务引用而不是Web引用。我们的大多数Web服务都是asmx Web服务。
添加服务引用后,我的web.config始终如下所示:
<bindings>
<basicHttpBinding>
<binding name="UserSoap" />
</basicHttpBinding>
<customBinding>
<binding name="UserSoap12">
<textMessageEncoding messageVersion="Soap12" />
<httpTransport />
</binding>
</customBinding>
</bindings>
<client>
<endpoint address="{{service URL}}" binding="basicHttpBinding"
bindingConfiguration="UserSoap" contract="User.UserSoap"
name="UserSoap" />
<endpoint address="{{service URL}}" binding="customBinding"
bindingConfiguration="UserSoap12" contract="User.UserSoap"
name="UserSoap12" />
</client>
然后当我尝试使用它时,我的应用程序会出现此错误:
无法加载合同“User.UserSoap”的端点配置部分,因为找到了该合同的多个端点配置。请按名称指明首选端点配置部分。
我一直在手动删除其中一个端点,但现在我想知道如何解决这个问题。 关于如何防止这种情况发生的任何想法,或者为什么会发生这种情况?
答案 0 :(得分:2)
如果要删除对服务的SOAP 1.2支持,请在web.config中包含以下内容:
<configuration>
<system.web>
<webServices >
<protocols>
<remove name="HttpSoap12"/>
</protocols>
</webServices>
</system.web>
</configuration>
Add or remove SOAP 1.2 for ASMX services
否则,您需要使用端点名称进行访问。
var service = new User.UserSoapClient("UserSoap")