https con error WCF: "No se pudo encontrar la dirección base que coincida con el esquema https"

Voy a https://mywebsite/MyApp/Myservice.svc y obtengo el siguiente error:

(El enlace funciona si utilizo http:// )

"El servicio '/MyApp/MyService.svc' no puede ser activado debido a una excepción durante la compilación. El mensaje de excepción es: Could not find a base address that matches scheme https for the endpoint with binding BasicHttpBinding. Los esquemas de dirección base registrados son [http]..*"

EDIT: Así que si cambio address="" por address="https:// ..." entonces obtengo este error en su lugar:

"Error: El protocolo 'https' no es compatible..... El ChannelDispatcher en 'https://.../Annotation.svc' con contrato(s) '"Annotation"' es incapaz de abrir su IChannelListener."

Este es el aspecto de mi Web.Config:

<services>
      <service behaviorConfiguration="AnnotationWCF.AnnotationBehavior"
              name="AnnotationWCF.Annotation">
              <endpoint address="" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_Annotation"
                      contract="AnnotationWCF.Annotation" />
              <endpoint address="" 
                  binding="basicHttpBinding" bindingConfiguration="SecureTransport"
                  contract="AnnotationWCF.Annotation" />
              <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
      </service>
<bindings>
<basicHttpBinding>
    <binding name="BasicHttpBinding_Annotation" maxBufferSize="2147483647"
            maxReceivedMessageSize="2147483647">
        <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
            maxArrayLength="2147483647" maxBytesPerRead="2147483647"
            maxNameTableCharCount="2147483647" />
    </binding>
    <binding name="SecureTransport" maxBufferSize="2147483647"
            maxReceivedMessageSize="2147483647">
        <security mode="Transport">
        <transport clientCredentialType="None"/>
        </security>
        <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
            maxArrayLength="2147483647" maxBytesPerRead="2147483647"
            maxNameTableCharCount="2147483647" />
    </binding>
</basicHttpBinding>
Solución

Resultó que mi problema era que yo estaba usando un equilibrador de carga para manejar el SSL, que luego lo envió a través de http al servidor real, que luego se quejó.

Descripción de una solución está aquí: http://blog.hackedbrain.com/2006/09/26/how-to-ssl-passthrough-with-wcf-or-transportwithmessagecredential-over-plain-http/

Editar: He arreglado mi problema, que era ligeramente diferente, después de hablar con el soporte de Microsoft.

Mi aplicación Silverlight tenía su dirección de punto final en el código de ir a través de https para el equilibrador de carga. El equilibrador de carga luego cambió la dirección de punto final a http y para apuntar al servidor real que iba a. Así que en cada servidor's web config he añadido un listenUri para el punto final que fue http en lugar de https

Comentarios (2)

Asegúrese de que SSL está activado en su servidor.

Obtuve este error al intentar utilizar un archivo de configuración HTTPS en mi equipo local que no tiene ese certificado. Yo estaba tratando de hacer pruebas locales - mediante la conversión de algunos de los enlaces de HTTPS a HTTP. Pensé que sería más fácil hacer esto que tratar de instalar un certificado autofirmado para pruebas locales.

Resultó que estaba recibiendo este error porque no tenía SSL habilitado en mi IIS local a pesar de que no tenía intención de usarlo.

Había algo en la configuración para HTTPS. Crear un certificado autofirmado en IIS7 permitió que HTTP funcionara :-)

Comentarios (3)

Creo que está intentando configurar su servicio de forma similar a la siguiente configuración. Hay más información aquí: [Especificar un servicio con dos puntos finales utilizando diferentes valores de enlace][1]. Además, aparte de para el desarrollo, it's probablemente no es una buena idea tener tanto HTTP & HTTPS puntos finales para el mismo servicio. Esto anula el propósito de HTTPS. Espero que esto te ayude.

Comentarios (1)