Quali sono i passaggi per configurare SSL in modo che funzioni con WCF in Azure?

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

  •  03-07-2019
  •  | 
  •  

Domanda

Pubblica i passaggi che hai eseguito per configurare SSL in modo che funzioni con WCF in Azure.

Il mio certificato valido è stato caricato correttamente ( utilizzando cspack ) e lavorare con cspack ) il resto del sito, ma dopo averlo aggiunto, il mio servizio WCF precedentemente funzionante ha smesso di funzionare. (Tutto ciò che ottengo è un errore 404 di nuovo a Silverlight, il che non è molto utile. In caso di voto a chi si presenta con un migliore logging, potrei fare anch'io per aiutare a diagnosticare il problema!)

Ho provato molte varianti su questa configurazione:

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

Sfortunatamente, il debug di questo e ottenere maggiori informazioni è davvero difficile perché non riesco a passare e debug con qualsiasi configurazione in remoto come userei sul server live perché il tag bindings ha problemi sul debug (ma non in diretta).

Grazie per l'aiuto e l'interesse!

È stato utile?

Soluzione

Wow! È vivo! Funziona !!

Non funziona ancora nel debug ( eccezione di sicurezza ), ma vivrò fino alla prossima versione.

Ecco la configurazione che ha funzionato:

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

(Penso che sia stato " mexHttpsBinding " che alla fine ha funzionato, anche se non capisco perfettamente perché abbia bisogno di metadati dopo che è già configurato, tornando ai libri che immagino)

Vorrei ancora sapere come abilitare una sorta di registrazione per WCF, ma cercherò ancora un po 'di più su questo fantastico sito e sono sicuro che troverò una risposta.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top