我正在尝试调用可在以下位置看到的Web服务: http://www.flexiblecarhire.com/flexibleservice/fchxmlinterface.asmx?op=GetAirportLocations
我正在使用VB.net,但C#中的任何解决方案都将非常受欢迎。
我这样做的方式是:
我正在向http://www.flexiblecarhire.com/flexibleservice/fchxmlinterface.asmx添加新的服务参考,并选择fchXMLInterface> fchXMLInterfaceHttpPost
在我的代码中,我有:Dim API As New ServiceReference1.fchXMLInterfaceSoapClient
当我运行时,我收到一条错误消息:
无法加载合同“ServiceReference1.fchXMLInterfaceSoap”的端点配置部分,因为找到了该合同的多个端点配置。请按名称指明首选端点配置部分。
我在这里发布的第一个链接检查了帮助,但我找不到。我该如何解决这个问题?
如果我不能将此Web服务称为ServiceReference,我该如何调用此Web服务?
答案 0 :(得分:3)
当我添加服务引用时,它已创建下面提供的配置。在那里,您可以看到同一联系人的两个端点 您应该指定要使用的端点名称,如
var a = new ServiceReference1.fchXMLInterfaceSoapClient("fchXMLInterfaceSoap12");
或者只删除不需要的端点配置。
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="fchXMLInterfaceSoap" 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="fchXMLInterfaceSoap12">
<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" decompressionEnabled="true" hostNameComparisonMode="StrongWildcard"
keepAliveEnabled="true" maxBufferSize="65536" proxyAuthenticationScheme="Anonymous"
realm="" transferMode="Buffered" unsafeConnectionNtlmAuthentication="false"
useDefaultWebProxy="true" />
</binding>
</customBinding>
</bindings>
<client>
<endpoint address="http://www.flexiblecarhire.com/flexibleservice/fchxmlinterface.asmx"
binding="basicHttpBinding" bindingConfiguration="fchXMLInterfaceSoap"
contract="ServiceReference1.fchXMLInterfaceSoap" name="fchXMLInterfaceSoap" />
<endpoint address="http://www.flexiblecarhire.com/flexibleservice/fchxmlinterface.asmx"
binding="customBinding" bindingConfiguration="fchXMLInterfaceSoap12"
contract="ServiceReference1.fchXMLInterfaceSoap" name="fchXMLInterfaceSoap12" />
</client>
</system.serviceModel>
答案 1 :(得分:0)
以下是我尝试使用上述网络服务的步骤,并找回了无效的代理商/密码错误消息:
点击添加网页参考并添加网址,我将其命名为“CarHireRef”作为参考名称,然后点击确定。
现在我调用服务的代码如下所示:
CarHireRef.fchXMLInterface ob = new CarHireRef.fchXMLInterface();
CarHireRef.ResultsGetLocations result = ob.GetAirportLocations("", "");
上面的过程没有任何配置条目,因为我正在添加Web引用而不是服务引用。
答案 2 :(得分:0)
无论调用什么协议,如basic,net.tcp或wshttp,该地址应该在web配置文件中从app.config文件中的客户端部分删除其他地址,在我的情况下我将服务称为htp:// machinename:700 / test.svc但在客户端部分有net.tcp和wshttp配置的地址,删除了那些地址,问题对我来说是固定的。
答案 3 :(得分:0)
[WebInvoke(BodyStyle = WebMessageBodyStyle.Wrapped)]
在界面文件中添加它可以正常工作。
答案 4 :(得分:0)
只需从{{1}}
中的web.config文件中删除customBinding即可答案 5 :(得分:0)
请注意,您有两个端点
<endpoint address="http://www.flexiblecarhire.com/flexibleservice/fchxmlinterface.asmx"
binding="basicHttpBinding" bindingConfiguration="fchXMLInterfaceSoap"
contract="ServiceReference1.fchXMLInterfaceSoap" name="fchXMLInterfaceSoap" />
<endpoint address="http://www.flexiblecarhire.com/flexibleservice/fchxmlinterface.asmx"
binding="customBinding" bindingConfiguration="fchXMLInterfaceSoap12"
contract="ServiceReference1.fchXMLInterfaceSoap" name="fchXMLInterfaceSoap12" />
</client
完全相同,因此服务器不知道您要访问哪个端点。只需擦除一个即可。