Pregunta

Publique los pasos que ha tomado para configurar SSL para que funcione con WCF en Azure.

Tengo mi certificado válido cargado correctamente ( usando cspack ) y trabajando con el resto del sitio, pero después de agregarlo, mi servicio WCF que funcionaba anteriormente dejó de funcionar. (Todo lo que recibo es un error 404 que regresa a Silverlight, lo cual no es muy útil. ¡Aumente los votos a quienquiera que tenga un mejor registro que podría estar haciendo también para ayudar a diagnosticar el problema!)

He probado muchas variaciones en esta configuración:

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

Desafortunadamente, depurar esto y obtener más información es realmente difícil porque no puedo avanzar y depurar con ninguna configuración remota como la que usaría en el servidor en vivo porque el la etiqueta bindings tiene problemas en la depuración (pero no en vivo).

¡Gracias por tu ayuda e interés!

¿Fue útil?

Solución

¡Guau! ¡Esta vivo! ¡¡Está funcionando !!

Todavía no funciona en depuración ( excepción de seguridad ), pero viviré con eso hasta el próximo lanzamiento.

Aquí está la configuración que funcionó:

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

(Creo que fue " mexHttpsBinding " lo que hizo que finalmente funcionara, aunque no entiendo completamente por qué necesita metadatos después de su configuración, volviendo a los libros, supongo)

Todavía me gustaría saber cómo habilitar algún tipo de registro para WCF, pero buscaré un poco más en este gran sitio y estoy seguro de que encontraré una respuesta.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top