2

http://www.flexiblecarhire.com/flexibleservice/fchxmlinterface.asmx?op=GetAirportLocationsで確認できるWebサービスを呼び出そうとしています 。

私は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

サービスリファレンスを追加すると、以下の構成が作成されます。ここに、同じ連絡先の2つのエンドポイントが表示されます。
使用するエンドポイント名を次のように指定する必要があります

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

以下は、上記のWebサービスで試した手順で、無効なエージェントコード/パスワードのエラーメッセージが返されました。

[Web参照の追加]をクリックしてURLを追加すると、参照名として「CarHireRef」という名前を付けて[OK]をクリックします。

これで、サービスを呼び出すためのコードは次のようになります。

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

上記の手順には、サービス参照ではなくWeb参照を追加しているため、構成エントリがありません。

于 2012-08-01T11:53:39.137 に答える
0

basic、net.tcp、wshttpのように呼び出されているプロトコルが何であれ、そのアドレスはWeb構成ファイルにある必要があります。app.configファイルのクライアントセクションから他のアドレスを削除します。私の場合、サービスをhtp:// machinename:700として呼び出しています。 /test.svcですが、クライアントセクションにnet.tcpおよびwshttp構成のアドレスがあり、それらのアドレスを削除して、問題を修正しました。

于 2013-12-03T21:06:31.763 に答える
0
   [WebInvoke(BodyStyle = WebMessageBodyStyle.Wrapped)]

インターフェイスファイルに追加すると、正常に動作します。

于 2014-04-09T05:52:15.667 に答える
0

内部のweb.configファイルからcustomBindingを削除するだけです<system.serviceModel></system.serviceModel>

于 2015-10-27T15:44:07.893 に答える
0

2つのエンドポイントがあることに注意してください

<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

これはまったく同じであるため、サーバーはアクセスするエンドポイントを認識しません。1つを消去するだけで問題ありません。

于 2017-08-26T16:59:30.273 に答える