Клиент WCF, использующий несколько услуг - PullRequest
6 голосов
/ 24 марта 2010

Я пытаюсь выяснить, как настроить мой web.config (клиент) для использования двух разных веб-служб WCF, один из которых использует другой, используя

У меня есть две конечные точки, наверное, мне нужны две разные конфигурации Binding. Это мой текущий узел привязки:

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

Я не могу добавить еще один базовый узел HttpBinding. Дело в том, что если ВСЕ, что я изменил, было параметром режима в <security mode="Transport">, то привязка будет отлично работать для одной или другой конечной точки.

Это похоже на общую проблему, но не нашли ответа. В целом, я не очень разбираюсь с WCF (если это не очевидно) за пределами простых приемов и вызовов. Любая помощь будет БОЛЬШОЙ!

Эта статья была близка, но не совсем та же проблема, поскольку им не требовался другой режим безопасности .: Как использовать несколько служб WCF с одного клиента

Заранее спасибо.

Ответы [ 2 ]

8 голосов
/ 24 марта 2010

Вам просто нужно добавить еще один узел <binding> с другим именем и любыми другими параметрами в узле <basicHttpBinding>.

Тогда, очевидно, просто убедитесь, что каждый клиент настроен на использование привязки, специфичной для него, задав соответствующее имя в атрибуте bindingConfiguration для каждого узла <endpoint>.

2 голосов
/ 24 марта 2010

У меня есть две конечные точки, я думаю, нужны две разные привязки конфигурации. Это мой ток узел привязки:

Не обязательно - если эти две службы используют одинаковые настройки и одинаковые протоколы, подойдет одна конфигурация привязки.

Вам необходимо добавить два элемента клиента:

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

Это должно сделать.

Конечно, если ваша вторая служба использует другую привязку или требует других настроек безопасности, тогда да, вам нужно добавить второй <binding name="something else" .....> под вашим узлом <basicHttpBinding> и ссылаться на эту вторую конфигурацию привязки от одного из две клиентские конечные точки здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...