2

我正在尝试调用可以在以下位置看到的 Web 服务: http ://www.flexiblecarhire.com/flexibleservice/fchxmlinterface.asmx?op=GetAirportLocations

我正在使用 VB.net,但 C# 中的任何解决方案都将受到欢迎。

我这样做的方式是:

  1. 我正在向http://www.flexiblecarhire.com/flexibleservice/fchxmlinterface.asmx添加一个新的服务引用并选择 fchXMLInterface > fchXMLInterfaceHttpPost

  2. 在我的代码中,我有:Dim API As New ServiceReference1.fchXMLInterfaceSoapClient

当我运行它时,我收到一条错误消息:

无法加载合同“ServiceReference1.fchXMLInterfaceSoap”的端点配置部分,因为找到该合同的多个端点配置。请按名称指明首选端点配置部分。

我在此处发布的第一个链接上查看了帮助,但找不到。我该如何解决?

如果我不能将此 Web 服务称为 ServiceReference,我该如何调用此 Web 服务?

4

6 回答 6

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>
于 2012-08-01T11:47:21.583 回答
0
   [WebInvoke(BodyStyle = WebMessageBodyStyle.Wrapped)]

将它添加到接口文件中就可以正常工作了。

于 2014-04-09T05:52:15.667 回答
0

无论调用什么协议,如基本、net.tcp 或 wshttp,该地址都应该在 web 配置文件中从 app.config 文件中的客户端部分删除其他地址,在我的情况下,我将服务称为 htp://machinename:700 /test.svc 但在客户端部分有带有 net.tcp 和 wshttp 配置的地址,删除了这些地址,问题已为我解决。

于 2013-12-03T21:06:31.763 回答
0

以下是我尝试使用上述 Web 服务并返回无效代理代码/密码错误消息的步骤:

单击添加 Web 引用并添加 URL,我将其命名为“CarHireRef”作为引用名称,然后单击确定。

现在我调用服务的代码如下所示:

CarHireRef.fchXMLInterface ob = new CarHireRef.fchXMLInterface();
CarHireRef.ResultsGetLocations result = ob.GetAirportLocations("", "");

上述过程没有任何配置条目,因为我添加的是 Web 引用而不是服务引用。

于 2012-08-01T11:53:39.137 回答
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

它们完全相同,因此服务器不知道您要访问哪个端点。删掉一个就好了。

于 2017-08-26T16:59:30.273 回答
0

只需从您的 web.config 文件中删除 customBinding<system.serviceModel></system.serviceModel>

于 2015-10-27T15:44:07.893 回答