6

web.config (クライアント) をセットアップして、2 つの異なる WCF Web サービスを使用する方法を理解しようとしています。

2 つのエンドポイントがあります。2 つの異なるバインディング構成が必要だと思います。これは私の現在のバインディングノードです:

<basicHttpBinding>
    <binding name="WebServiceProxyServiceSoapBinding" closeTimeout="00:01:00"
        openTimeout="00:01:00" receiveTimeout="00:01:00" sendTimeout="00:01:00"
        allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
        maxBufferSize="2147483647" maxBufferPoolSize="524288" maxReceivedMessageSize="2147483647"
        messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true">
      <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
          maxBytesPerRead="4096" maxNameTableCharCount="16384" />
      <security mode="Transport">
        <transport clientCredentialType="None" proxyCredentialType="None" realm="" />
        <message clientCredentialType="UserName" algorithmSuite="Default" />
      </security>
    </binding>
  </basicHttpBinding>

別の basicHttpBinding ノードを追加できません。問題は、私が変更したのが mode パラメータだけだった<security mode="Transport">場合、バインディングはいずれかのエンドポイントでうまく機能するということです。

これは一般的な問題のようですが、答えは見つかりませんでした。全体的に、単純な消費と呼び出し以外では、WCFの経験はあまりありません(それが明らかでない場合)。どんな助けでも素晴らしいでしょう!

この記事は近いものでしたが、別のセキュリティ モードを必要としなかったため、まったく同じ問題ではありませんでした。: 1 つのクライアントから複数の WCF サービスを使用する方法

前もって感謝します。

4

2 に答える 2

8

<binding>ノードの下に、別の名前と好きなオプションを付けて、別のノードを追加するだけです<basicHttpBinding>

次に、当然ながら、各ノードのbindingConfiguration属性に適切な名前を設定して、クライアント固有のバインディングを使用するように各クライアントが構成されていることを確認します。<endpoint>

于 2010-03-24T17:16:32.693 に答える
2

2 つのエンドポイントがあります。2 つの異なるバインディング構成が必要だと思います。これは私の現在のバインディングノードです:

必ずしもそうとは限りません。これら 2 つのサービスが同じ設定と同じプロトコルを使用している場合は、1 つのバインド構成で十分です。

2 つ追加する必要があるのは client 要素です。

<system.serviceModel>
   <bindings>
       ..... (as you already have it) ....
   </bindings>
   <client>
      <endpoint name="Service1Endpoint"
                address="http://yourserver/service1.svc" 
                binding="basicHttpBinding"
                bindingConfiguration="WebServiceProxyServiceSoapBinding"
                contract="IWCFService1"  />
      <endpoint name="Service2Endpoint"
                address="http://yourserver/service2.svc" 
                binding="basicHttpBinding"
                bindingConfiguration="WebServiceProxyServiceSoapBinding"
                contract="IWCFService2"  />
   </client>
</system.serviceModel>

それはすべきです。

もちろん、2 番目のサービスが別のバインディングを使用する場合、または別のセキュリティ設定が必要な場合は<binding name="something else" .....>、ノードの下に2 番目を追加し、<basicHttpBinding>ここで 2 つのクライアント エンドポイントのいずれかからその 2 番目のバインディング構成を参照する必要があります。

于 2010-03-24T18:07:23.733 に答える