2010-03-24 7 views
6

J'essaie de comprendre comment mettre en place mon web.config (le client) à consommer deux services Web WCF différents en utilisant un autre en utilisantWCF clients consommant plusieurs services

J'ai deux point final, je suppose que j'ai besoin de deux configurations de liaison différentes. Ceci est mon noeud de liaison actuel:

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

Je ne peux pas ajouter un autre noeud basicHttpBinding. La chose est si tout ce que j'ai changé était le paramètre de mode dans <security mode="Transport"> alors la liaison fonctionnera très bien pour l'un ou l'autre point de terminaison.

Cela semble être un problème commun, mais n'a pas trouvé de réponse. Globalement, je ne suis pas très expérimenté avec WCF (si ce n'est pas évident) en dehors de la simple consommation et appel. Toute aide est la bienvenue!

Cet article était proche, mais pas tout à fait le même problème car ils ne ont pas besoin d'un mode de sécurité différent .: How to consume multiple WCF services from one client

Merci à l'avance.

Répondre

6

Vous avez juste besoin d'ajouter un autre nœud <binding>, avec un nom différent et les options différentes que vous voulez, sous le nœud <basicHttpBinding>. Ensuite, bien sûr, assurez-vous simplement que chaque client est configuré pour utiliser la liaison qui lui est propre en définissant le nom approprié dans l'attribut bindingConfiguration pour chaque nœud <endpoint>.

+0

:) C'était trop facile. Je vous remercie! – SCEV

1

J'ai deux point final, je suppose que je besoin de deux différentes configurations de liaison . Ceci est mon actuel noeud de liaison :

Pas nécessairement - si ces deux services utilisent les mêmes paramètres et mêmes protocoles, une configuration de liaison fera.

Ce que vous devez ajouter deux est un élément 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> 

Cela devrait faire. Bien sûr, si votre deuxième service utilise une autre liaison, ou nécessite des paramètres de sécurité différents, alors oui, vous devez ajouter un second <binding name="something else" .....> sous votre nœud <basicHttpBinding> et référencer cette deuxième configuration de liaison depuis l'un de vos deux terminaux client ici.

+0

Aw, je vois que j'essayais d'ajouter un deuxième nœud , pas un deuxième nœud Binding enfant! Je vous remercie! – SCEV

Questions connexes