none
No se encontró una dirección base que coincida con el esquema http para el extremo con el enlace WSHttpBinding. Los esquemas de dirección base registrados son [https]. RRS feed

  • Pregunta

  • Hola,

    Llevo un par de meses trabajando con WCF. trabajo con un Windows Server 2008 y su IIS 7.0 y desarrollo con VS2010.

    Acabo de hacer un servicio WCF y lo he publicado sobre un site HTTP. Hasta ahí todo correcto.

    Cuándo he tratado de publicar el servicio sobre un site HTTPS obtengo el siguiente error:

    No se encontró una dirección base que coincida con el esquema http para el extremo con el enlace WSHttpBinding. Los esquemas de dirección base registrados son [https].

    Por lo que he leído en internet, para publicar en un site HTTPS simplemente hay que modificar el Web.config y cambiar el endPoint de los metadattos de Http por el de Https, usar:

    <endpoint name="HttpsMexEndpoint" address="mex" binding="mexHttpsBinding" bindingConfiguration="" contract="IMetadataExchange" />
    

    y habilitar en ServiceMetadata Https en vez de Http, es decir:

    <serviceMetadata httpGetEnabled="false" httpsGetEnabled="true" />
    

    Pero lo que me pasa a mí, es que, al decir, que no se encuentra dirección base que coincida con el esquema HTTP, es como si el site no pidiera HTTPS. Cómo si esperase por defecto HTTP.

    En la configuración del Site tengo un único enlace del tipo "https", no tengo asignado nombre de host, el puerto es "443" y admito todas las direcciones IP. Tengo asignado un certificado de autenticación de servidor al site, de hecho hay una aplicación web que corre OK en el site y un servicio WCF generado desde Biztalk que también funciona OK.

    En Configuración Avanzada, en Comportamiento, para "protocolos habilitados" tengo "https".

    ¿Porque puede ocurrir esto? ¿Es problema de la publicación? ¿Alguién sabe si tengo que cambiar algo más en el Web.config? Lo que no veo normal es que me pida una dirección http cuándo el site está configurado para ser https.

    Gracias.


    Regards, Pablo Martín Gutierrez.
    viernes, 27 de mayo de 2011 12:44

Respuestas

  • Hola, me han dado la solución en otro foro de MSDN, el problema era el web.config. Faltaba establecer el modo de seguridad correcto en el binding.
    Regards, Pablo Martín Gutierrez.
    • Marcado como respuesta Blonix lunes, 30 de mayo de 2011 14:31
    lunes, 30 de mayo de 2011 14:31

Todas las respuestas

  • Hola,

    Llevo un par de meses trabajando con WCF. trabajo con un Windows Server 2008 y su IIS 7.0 y desarrollo con VS2010.

    Acabo de hacer un servicio WCF y lo he publicado sobre un site HTTP. Hasta ahí todo correcto.

    Cuándo he tratado de publicar el servicio sobre un site HTTPS obtengo el siguiente error:

    No se encontró una dirección base que coincida con el esquema http para el extremo con el enlace WSHttpBinding. Los esquemas de dirección base registrados son [https].

    Por lo que he leído en internet, para publicar en un site HTTPS simplemente hay que modificar el Web.config y cambiar el endPoint de los metadattos de Http por el de Https, usar:

     

    <endpoint name="HttpsMexEndpoint" address="mex" binding="mexHttpsBinding" bindingConfiguration="" contract="IMetadataExchange" />
    

     

    y habilitar en ServiceMetadata Https en vez de Http, es decir:

     

    <serviceMetadata httpGetEnabled="false" httpsGetEnabled="true" />
    

     

    Pero lo que me pasa a mí, es que, al decir, que no se encuentra dirección base que coincida con el esquema HTTP, es como si el site no pidiera HTTPS. Cómo si esperase por defecto HTTP.

    En la configuración del Site tengo un único enlace del tipo "https", no tengo asignado nombre de host, el puerto es "443" y admito todas las direcciones IP. Tengo asignado un certificado de autenticación de servidor al site, de hecho hay una aplicación web que corre OK en el site y un servicio WCF generado desde Biztalk que también funciona OK.

    En Configuración Avanzada, en Comportamiento, para "protocolos habilitados" tengo "https".

    ¿Porque puede ocurrir esto? ¿Es problema de la publicación? ¿Alguién sabe si tengo que cambiar algo más en el Web.config? Lo que no veo normal es que me pida una dirección http cuándo el site está configurado para ser https.

    Gracias.


    Regards, Pablo Martín Gutierrez.

    Por otro lado he hecho una prueba, he añadido un enlace HTTP sobre el puerto 80 al site y el servicio web se levanta correctamente, es más, se accede a través de una url HTTPS, pero en el WSDL crea SOAP12:address location y wsa10:Adress con HTTP.

    soap12:address location="http://servidor/aplicacion/servicio.svc"/><wsa10:EndpointReference><wsa10:Address>http://servidor/aplicacion/servicio.svc</wsa10:Address><Identity xmlns="http://schemas.xmlsoap.org/ws/2006/02/addressingidentity"><Spn>host/servidor</Spn></Identity></wsa10:EndpointReference></wsdl:port></wsdl:service></wsdl:definitions>

     

    ¿Habrá que especificar algo en el código?


    Regards, Pablo Martín Gutierrez.
    viernes, 27 de mayo de 2011 12:52
  • Hola Pablo,

     Estás seguro que apuntás al binding correcto? por el error que acusa parece que no, si pudieras copiar todo el .config y la el .svc que publicás tal vez pueda darte una ayuda, gracias!

    lunes, 30 de mayo de 2011 12:34
  • Hola,

    el Web.config es el siguiente:

     

     

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
    	<system.web>
    		<compilation debug="false" strict="false" explicit="true" targetFramework="4.0" />
    		<pages>
    			<namespaces>
    				<add namespace="System.Runtime.Serialization" />
    				<add namespace="System.ServiceModel" />
    				<add namespace="System.ServiceModel.Web" />
    			</namespaces>
    		</pages>
    	</system.web>
    	<system.serviceModel>
    		<services>
    			<service behaviorConfiguration="Rupx.comun.ConsultaBehavior" name="Rupx.comun.Notificacion">				
       <endpoint address="" binding="wsHttpBinding" contract="Rupx.comun.INotificacion">    
    				</endpoint>
      <endpoint name="HttpsMexEndpoint" address="mex" binding="mexHttpsBinding" bindingConfiguration="" contract="IMetadataExchange" />
    			</service>
    		</services>
    		<behaviors>
    			<serviceBehaviors>
    				<behavior name="Rupx.comun.ConsultaBehavior">
       <serviceDebug httpHelpPageEnabled="true" httpsHelpPageEnabled="true" includeExceptionDetailInFaults="true" />
       <serviceMetadata httpGetEnabled="false" httpsGetEnabled="true" />
       <serviceSecurityAudit auditLogLocation="Application" suppressAuditFailure="false" serviceAuthorizationAuditLevel="SuccessOrFailure" messageAuthenticationAuditLevel="SuccessOrFailure" />
       <serviceCredentials>
       <clientCertificate>
        <authentication certificateValidationMode="PeerOrChainTrust" revocationMode="NoCheck" />
       </clientCertificate>
       <userNameAuthentication userNamePasswordValidationMode="Custom" />
       <issuedTokenAuthentication allowUntrustedRsaIssuers="true" />
       </serviceCredentials>
    				</behavior>
    			</serviceBehaviors>
    		</behaviors>
    	</system.serviceModel>
     <system.webServer>
     <modules runAllManagedModulesForAllRequests="true" />
     <security>
      <access sslFlags="SslNegotiateCert" />
     </security>
     </system.webServer>
    </configuration>
    

     

    El .SVC:

     

    <%@ ServiceHost Language="VB" Debug="true" Service="Rupx.comun.Notificacion" %>
    

     

    Sí que  apunto al sitio correcto ya que si añado en el site dónde está alojado el WCF un enlace HTTP con e lpuerto 80 no aparece el error, eso sí, crea el WSDL con el address apuntando a HTTP y no ha HTTPS.

     


    Regards, Pablo Martín Gutierrez.
    lunes, 30 de mayo de 2011 14:17
  • Hola, me han dado la solución en otro foro de MSDN, el problema era el web.config. Faltaba establecer el modo de seguridad correcto en el binding.
    Regards, Pablo Martín Gutierrez.
    • Marcado como respuesta Blonix lunes, 30 de mayo de 2011 14:31
    lunes, 30 de mayo de 2011 14:31