VB.NET& SOAP - 找到该合同的多个端点配置

时间:2012-08-01 11:13:54

标签: vb.net wcf web-services soap

我正在尝试调用可在以下位置看到的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

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

      

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

    我在这里发布的第一个链接检查了帮助,但我找不到。我该如何解决这个问题?

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

6 个答案:

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

完全相同,因此服务器不知道您要访问哪个端点。只需擦除一个即可。