2009-03-03 6 views
7

Bitte veröffentlichen Sie die Schritte, die Sie unternommen haben, um SSL für die Zusammenarbeit mit WCF auf Azure einzurichten.Was sind die Schritte zum Einrichten von SSL für die Zusammenarbeit mit WCF in Azure?

Ich habe meine valid certificate uploaded erfolgreich (using cspack) und arbeiten mit dem Rest der Website, aber nach dem Hinzufügen, funktioniert mein zuvor funktionierender WCF-Dienst nicht mehr. (Alles, was ich bekomme, ist ein 404-Fehler zurück zu Silverlight, der nicht sehr hilfreich ist. Up-Stimmen zu wem mit etwas bessere Protokollierung kommt könnte ich auch tun, um das Problem zu diagnostizieren!)

Ich habe viele versucht Variationen dieser Konfiguration:

<system.serviceModel> 
    <!--start added for SSL--> 
    <bindings> 
     <basicHttpBinding> 
     <binding name="SecureBasicHttpBinding"> 
      <security mode="Transport"> 
      <transport clientCredentialType="None" /> 
      </security> 
     </binding> 
     </basicHttpBinding> 
    </bindings> 
    <!--end added for SSL--> 
    <behaviors> 
     <!--start added for SSL--> 
     <endpointBehaviors> 
     <behavior name="DisableServiceCertificateValidation"> 
      <clientCredentials> 
      <serviceCertificate> 
       <authentication certificateValidationMode="None" 
           revocationMode="NoCheck" /> 
      </serviceCertificate> 
      </clientCredentials> 
     </behavior> 
     </endpointBehaviors> 
     <!--start added for SSL--> 
     <serviceBehaviors> 
     <behavior name="Silverheat.Cloud_WebRole.API.DataServiceBehavior"> 
      <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" /> 
      <serviceDebug includeExceptionDetailInFaults="true" /> 
      <!-- certificate checking removed --> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" /> 
    <services> 
     <service behaviorConfiguration="Silverheat.Cloud_WebRole.API.DataServiceBehavior" 
      name="Silverheat.Cloud_WebRole.API.DataService"> 
     <!--<endpoint address="" binding="basicHttpBinding" contract="Silverheat.Cloud_WebRole.API.DataService" />--> 
     <endpoint bindingConfiguration="SecureBasicHttpBinding" 
        behaviorConfiguration="DisableServiceCertificateValidation" 
        address="" binding="basicHttpBinding" 
        contract="Silverheat.Cloud_WebRole.API.DataService" /> 
     <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> 
     </service> 
    </services> 
    </system.serviceModel> 

Leider ist dies das Debuggen und weitere Informationen bekommen hart ist wirklich, weil ich nicht remote durch und debuggen mit jeder Konfiguration treten kann, wie ich auf dem Live-Server, da die bindings tag has problems auf Debug verwenden würde (aber nicht live).

Vielen Dank für Ihre Hilfe und Ihr Interesse!

Antwort

6

Wow! Es lebt! Es funktioniert!!

Funktioniert immer noch nicht in debug (security exception), aber ich werde damit bis zur nächsten Version leben.

Hier ist die Konfiguration, die funktionierte:

<system.serviceModel> 
    <bindings> 
     <basicHttpBinding> 
     <binding name="SecureBasicHttpBinding"> 
      <security mode="Transport"> 
      <transport clientCredentialType="None" /> 
      </security> 
     </binding> 
     </basicHttpBinding> 
    </bindings> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="Silverheat.Cloud_WebRole.API.DataServiceBehavior"> 
      <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" /> 
      <serviceDebug includeExceptionDetailInFaults="true" /> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" /> 
    <services> 
     <service behaviorConfiguration="Silverheat.Cloud_WebRole.API.DataServiceBehavior" 
      name="Silverheat.Cloud_WebRole.API.DataService"> 
     <endpoint bindingConfiguration="SecureBasicHttpBinding" 
      address="" binding="basicHttpBinding" 
      contract="Silverheat.Cloud_WebRole.API.DataService" /> 
     <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" /> 
     </service> 
    </services> 
    </system.serviceModel> 

(ich glaube, es „mexHttpsBinding“ war, dass es endlich geschafft arbeiten, obwohl ich nicht ganz verstehen, warum es Meta-Daten nach der bereits konfiguriert werden muss, zurück zu die Bücher, die ich denke)

Ich würde immer noch gerne wissen, wie man eine Art von Protokollierung für WCF aktivieren, aber ich werde um diese große Website ein wenig mehr stochern und ich bin sicher, dass ich eine Antwort finden werde.

Verwandte Themen