异常:System.InvalidOperationException: 无法加载协定为“ServiceReference1.MainShowWebServiceSoap”的终结点配置部分,因为找到了该协定的多个终结点配置。请按名称指示首选的终结点配置部分。
部分代码:ServiceReference1.MainShowWebServiceSoapClient mss = new ServiceReference1.MainShowWebServiceSoapClient();
app.config文件
<?xml version="1.0" encoding="utf-8" ?>
<configuration><system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="MainShowWebServiceSoap" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
<customBinding>
<binding name="MainShowWebServiceSoap12">
<textMessageEncoding maxReadPoolSize="64" maxWritePoolSize="16"
messageVersion="Soap12" writeEncoding="utf-8">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
</textMessageEncoding>
<httpTransport manualAddressing="false" maxBufferPoolSize="524288"
maxReceivedMessageSize="65536" allowCookies="false" authenticationScheme="Anonymous"
bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
keepAliveEnabled="true" maxBufferSize="65536" proxyAuthenticationScheme="Anonymous"
realm="" transferMode="Buffered" unsafeConnectionNtlmAuthentication="false"
useDefaultWebProxy="true" />
</binding>
</customBinding>
</bindings>
<client>
<endpoint address="http://localhost:29003/MainShowWebService.asmx"
binding="basicHttpBinding" bindingConfiguration="MainShowWebServiceSoap"
contract="ServiceReference1.MainShowWebServiceSoap" name="MainShowWebServiceSoap" />
<endpoint address="http://localhost:29003/MainShowWebService.asmx"
binding="customBinding" bindingConfiguration="MainShowWebServiceSoap12"
contract="ServiceReference1.MainShowWebServiceSoap" name="MainShowWebServiceSoap12" />
</client>
</system.serviceModel>
</configuration>
原因分析:系统加载配置文件时,自动多次创建了“外部服务引用”(红色字体)
解决方法:
1、由于各服务引用中"name"不一样,创建服务对象时可加上name名称
代码:ServiceReference1.MainShowWebServiceSoapClient mss = new ServiceReference1.MainShowWebServiceSoapClient("MainShowWebServiceSoap");
2、删除一个<endpoint >节点即可