Quelles sont les étapes à suivre pour configurer SSL afin qu'il fonctionne avec WCF sur Azure?

StackOverflow https://stackoverflow.com/questions/604573

  •  03-07-2019
  •  | 
  •  

Question

Indiquez les étapes que vous avez suivies pour configurer SSL afin qu'il fonctionne avec WCF sur Azure.

Mon certificat valide a été chargé avec succès ( en utilisant cspack ) et en travaillant avec le reste du site, mais après l'avoir ajouté, mon service WCF qui fonctionnait auparavant a cessé de fonctionner. (Tout ce que je reçois est une erreur 404 de retour dans Silverlight, ce qui n’est pas très utile. Remportez des votes pour qui que ce soit qui propose une meilleure journalisation que je pourrais faire pour aider à diagnostiquer le problème aussi!)

J'ai essayé de nombreuses variantes de cette configuration:

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

Malheureusement, il est très difficile de déboguer cela et d’obtenir plus d’informations, car je ne peux pas effectuer de débogage avec une configuration à distance, comme je l’utiliserais sur le serveur live, car La balise bindings a des problèmes lors du débogage (mais pas en direct).

Merci de votre aide et de votre intérêt!

Était-ce utile?

La solution

Wow! C'est vivant! Son travail !!

Ne fonctionne toujours pas dans le débogage ( exception de sécurité ), mais je vais vivre avec cela jusqu'à la prochaine version.

Voici la configuration qui a fonctionné:

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

(Je pense que c'est "mexHttpsBinding" qui l'a finalement fait fonctionner, bien que je ne comprenne pas tout à fait pourquoi il a besoin de métadonnées après sa configuration, retour aux livres, je suppose)

J'aimerais toujours savoir comment activer une sorte de journalisation pour la WCF, mais je vais fouiller un peu plus sur ce site génial et je suis sûr que je trouverai une réponse.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top