添加ASMX Web服务作为服务引用会生成多个端点

时间:2014-06-19 17:04:27

标签: asp.net asp.net-mvc-5 asmx

最近在我的所有新的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”的端点配置部分,因为找到了该合同的多个端点配置。请按名称指明首选端点配置部分。

我一直在手动删除其中一个端点,但现在我想知道如何解决这个问题。 关于如何防止这种情况发生的任何想法,或者为什么会发生这种情况?

1 个答案:

答案 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")