2010-01-25 5 views
5

Wir möchten unsere WCF-Dienste über REST und auch über TCP offenlegen, um sie beide mit SSL zu schützen. Wir haben eine gültige SSL-Datei in Azure hochgeladen und die richtige Zuordnung eingerichtet, so dass die Funktion https://service.ourdomain.com ordnungsgemäß funktioniert.Konfigurieren von WebHTTP- und NetHTTP-Bindungen über SSL in WCF auf Azure

Ich habe zwei Endpunktbindungen, WebHttpBinding für die REST-Dienste und eine customBinding des Typs NetHttpBinding für das TCP eingerichtet.

Ich glaube, ich habe SSL mit webHTTP arbeiten, aber wenn ich versuche, und aktivieren httpsTransport in der benutzerdefinierten für NetHTTP Bindung Ich erhalte den Fehler

„Kann das Transportelement nicht hinzufügen‚Httptransport‘. Ein anderes Transportelement existiert bereits in der Bindung Es kann für jede Bindung nur ein Transportelement geben "

Die gesamte Konfiguration wurde in der WebRole vorgenommen web.config Ich habe mir die anderen WCF-Fragen hier angesehen von den Silverlight-Leuten und sie haben mit dem webHTTP über SSL geholfen, aber das binäre Zeug hat mich ratlos gemacht.

Kann ich sowohl REST- als auch TCP WCF-Dienste von derselben SSL-Domäne aus ausführen, wenn ich es also gerne wissen würde?

<system.serviceModel> 
<bindings> 
    <webHttpBinding> 
    <binding name="SecureWebHttpBinding"> 
     <security mode="Transport"> 
     <transport clientCredentialType="None" /> 
     </security> 
    </binding> 
    </webHttpBinding> 

    <customBinding> 
    <binding name="NetHttpBinding"> 
     <binaryMessageEncoding /> 
     <!--<httpsTransport authenticationScheme="None" />--> 
    </binding> 
    </customBinding> 
</bindings> 

<behaviors> 
    <endpointBehaviors> 
    <behavior name="webBehavior"> 
     <webHttp /> 
    </behavior> 
    </endpointBehaviors> 

    <serviceBehaviors> 
    <behavior name="RestService"> 
     <serviceMetadata httpsGetEnabled="true" /> 
     <serviceDebug includeExceptionDetailInFaults="true" /> 
    </behavior> 

    <behavior name="BinaryService"> 
     <serviceMetadata httpsGetEnabled="true" /> 
     <serviceDebug includeExceptionDetailInFaults="true" /> 
    </behavior> 

    </serviceBehaviors> 
</behaviors> 

<services> 
    <service behaviorConfiguration="RestService" name="WebService.Rest"> 
    <endpoint address="Achievements" 
       binding="webHttpBinding" 
       bindingConfiguration="SecureWebHttpBinding" 
       behaviorConfiguration="webBehavior" 
       contract="WebService.JSON.IAchievementJSON"/> 
</service> 

    <service behaviorConfiguration="BinaryService" name="WebService.Binary"> 
    <endpoint address="Achievements" 
       binding="customBinding" 
       bindingConfiguration="NetHttpBinding" 
       contract="WebService.BinaryInterfaces.IAchievementBinary"/> 
    </service> 
</services> 
</system.serviceModel> 

Antwort

1

Ihre Endpunktadresse für beide Bindungen ist identisch. Versuchen Sie, einen von ihnen zu Achievements/bin oder etwas zu ändern. Dies sollte Ihr Problem lösen.