2010-03-24 13 views
6

Ich versuche, herauszufinden, wie meine web.config einzurichten (der Client) zu konsumieren zwei verschiedene WCF Web Services eine das andere mit mitWCF-Client raubend mehrere Dienste

ich die beiden Endpunkt haben, ich Ich denke, ich brauche zwei verschiedene Binding-Konfigurationen. Das ist mein momentaner verbindlicher Knoten:

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

Ich kann keinen weiteren basicHttpBinding-Knoten hinzufügen. Die Sache ist, wenn alles, was ich geändert habe, der Modusparameter in <security mode="Transport"> war, dann wird die Bindung für den einen oder anderen Endpunkt gut funktionieren.

Dies scheint ein häufiges Problem, aber haben keine Antwort gefunden. Insgesamt bin ich nicht sehr Erfahrungen mit WCF (wenn das nicht offensichtlich ist) außerhalb der einfachen konsumieren und anrufen. Jede Hilfe wäre großartig!

Dieser Artikel war in der Nähe, aber nicht ganz die gleiche Problem, da sie nicht einen anderen Sicherheitsmodus brauchten .: How to consume multiple WCF services from one client

Vielen Dank im Voraus.

Antwort

6

Sie müssen nur einen anderen <binding> Knoten hinzufügen, mit einem anderen Namen und was auch immer verschiedene Optionen, die Sie möchten, unter dem <basicHttpBinding> Knoten. Stellen Sie dann sicher, dass jeder Client so konfiguriert ist, dass er die für ihn spezifische Bindung verwendet, indem Sie den entsprechenden Namen im bindingConfiguration-Attribut für jeden <endpoint>-Knoten angeben.

+0

:) Das war zu einfach. Vielen Dank! – SCEV

1

ich die beiden Endpunkt haben, denke ich, dass ich zwei verschiedene Bindungs ​​ Konfigurationen benötigen . Dies ist mein aktueller Bindung Knoten:

Nicht unbedingt - wenn diese beiden Dienste die gleichen Einstellungen und dieselben Protokolle verwenden, eine Bindungskonfiguration tun wird.

Was müssen Sie zwei hinzufügen von einem Client-Element:

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

das tun soll.

Natürlich, wenn Ihre zweite Dienst eine andere Bindung verwendet, oder andere Sicherheitseinstellungen benötigt, dann ja, würden Sie brauchen eine zweite <binding name="something else" .....> unter Ihrem <basicHttpBinding> Knoten und Referenz hinzufügen, die zweite Konfiguration von einem Ihrer zwei Client-Endpunkte Bindung Hier.

+0

Aw, ich sehe, dass ich versuchte, einen zweiten Knoten hinzuzufügen, nicht einen zweiten untergeordneten Binding-Knoten! Vielen Dank! – SCEV

Verwandte Themen