积极答复者
vs2013 网站添加服务引用后,报错

问题
-
我在解决方案下 新建网站,然后添加 服务引用,http://localhost:1883/WebService1.asmx 这个地址,然后在页面代码 写上
ServiceReference1.WebService1SoapClient client = new ServiceReference1.WebService1SoapClient(); string str = client.MyMehod("", "");//上一句就报错了
预览页面就报错
无法加载协定为“ServiceReference1.WebService1Soap”的终结点配置部分,因为找到了该协定的多个终结点配置。请按名称指示首选的终结点配置部分。
请问是怎么回事?
开心了就笑,不开心了就过会儿再笑
答案
-
看你的web.config,里面有<client></client>节点下,应该有多个endpoint.
.net运行时不知道使用哪个endpoint来调用web service.
解决方法
1. 如果你只调用一个web service ,可以在web.config中删除冗余的endpoint,这样运行时就知道用这个唯一的endpoint了。
2. 如果调用多余一个web service, 那么每个service应该有一个endpoint对应,代码里初始化WebService1SoapClient的时候要使用,接收endpoint作为参数的overload构造函数,例如
ServiceReference1.WebService1SoapClient client = new ServiceReference1.WebService1SoapClient("EndpointName");
- 已标记为答案 NewJoin 2015年10月30日 12:53
-
你好,
你的两个endpoint看起来是不同的,分别用于soap1.1和soap1.2. 如果你确定只使用一个的话,可以删除另一个,已经对应的binding. binding不删除没有问题。
但是一update service reference...还会回来。
因此我建议在代码中,制定使用哪个endpint,例如:
ServiceReference1.WebService1SoapClient client = new ServiceReference1.WebService1SoapClient("WebService1Soap"); 或者使用另一个endpiont
可以通过修改url 来调用live或者test的webservice 。
全部回复
-
看你的web.config,里面有<client></client>节点下,应该有多个endpoint.
.net运行时不知道使用哪个endpoint来调用web service.
解决方法
1. 如果你只调用一个web service ,可以在web.config中删除冗余的endpoint,这样运行时就知道用这个唯一的endpoint了。
2. 如果调用多余一个web service, 那么每个service应该有一个endpoint对应,代码里初始化WebService1SoapClient的时候要使用,接收endpoint作为参数的overload构造函数,例如
ServiceReference1.WebService1SoapClient client = new ServiceReference1.WebService1SoapClient("EndpointName");
- 已标记为答案 NewJoin 2015年10月30日 12:53
-
谢谢。配置节点如下
<system.serviceModel> <bindings> <basicHttpBinding> <binding name="WebService1Soap" /> </basicHttpBinding> <customBinding> <binding name="WebService1Soap12"> <textMessageEncoding messageVersion="Soap12" /> <httpTransport /> </binding> </customBinding> </bindings> <client> <endpoint address="http://localhost:1883/WebService1.asmx" binding="basicHttpBinding" bindingConfiguration="WebService1Soap" contract="ServiceReference1.WebService1Soap" name="WebService1Soap" /> <endpoint address="http://localhost:1883/WebService1.asmx" binding="customBinding" bindingConfiguration="WebService1Soap12" contract="ServiceReference1.WebService1Soap" name="WebService1Soap12" /> </client> </system.serviceModel>
我删除一个 endpoint 后,果然可以使用了。那么我想问,
1两个 endpoint k可以随便删除吗?
2.删除 endpoint 后,对应的 bindings 里的节点也要删除吧?不删除有什么影响吗?
3.我可以通过只修改 这里的地址,来更新服务内容吗?比如把本地地址换成远程地址
开心了就笑,不开心了就过会儿再笑
-
你好,
你的两个endpoint看起来是不同的,分别用于soap1.1和soap1.2. 如果你确定只使用一个的话,可以删除另一个,已经对应的binding. binding不删除没有问题。
但是一update service reference...还会回来。
因此我建议在代码中,制定使用哪个endpint,例如:
ServiceReference1.WebService1SoapClient client = new ServiceReference1.WebService1SoapClient("WebService1Soap"); 或者使用另一个endpiont
可以通过修改url 来调用live或者test的webservice 。