2010-03-24 28 views
6

que estoy tratando de averiguar cómo configurar mi web.config (el cliente) para consumir uno dos diferentes servicios web WCF utilizando la otra usandoWCF consumir cliente múltiples servicios

que tienen los dos punto final, me Supongo que necesito dos configuraciones de enlace diferentes. Este es mi nodo de enlace actual:

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

No puedo agregar otro nodo basicHttpBinding. El problema es que TODO lo que modifiqué fue el parámetro de modo en <security mode="Transport">, entonces el enlace funcionará bien para uno u otro punto final.

Parece un problema común, pero no ha encontrado una respuesta. En general, no tengo muchas experiencias con WCF (si eso no es obvio) fuera del simple consumo y llamada. ¡Cualquier ayuda sería genial!

Este artículo estaba cerca, pero no es exactamente el mismo problema, ya que no necesitan un modo de seguridad diferentes .: How to consume multiple WCF services from one client

Gracias de antemano.

Respuesta

6

Solo necesita agregar otro nodo <binding>, con un nombre diferente y las opciones que desee, debajo del nodo <basicHttpBinding>.

Luego, obviamente, solo asegúrese de que cada cliente esté configurado para usar el enlace que es específico para ellos estableciendo el nombre apropiado en el atributo bindingConfiguration para cada nodo <endpoint>.

+0

:) Eso fue muy fácil. ¡Gracias! – SCEV

1

que tienen los dos punto final, supongo que necesito dos diferentes configuraciones vinculante. Este es mi actual nodo de unión :

No necesariamente - si estos dos servicios utilizan la misma configuración y los mismos protocolos, una configuración de enlace va a hacer.

Lo que hay que añadir dos de cliente es un elemento:

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

que debe hacerlo.

Por supuesto, si su segundo servicio utiliza otro enlace o necesita configuraciones de seguridad diferentes, entonces sí, necesitaría agregar un segundo <binding name="something else" .....> bajo su nodo <basicHttpBinding> y hacer referencia a esa segunda configuración de enlace desde uno de sus dos extremos del cliente aquí.

+0

Aw, veo que estaba tratando de agregar un segundo nodo , ¡no un segundo nodo vinculante hijo! ¡Gracias! – SCEV

Cuestiones relacionadas