Configurar HTTPS en servicio WCF

1,334 views
Skip to first unread message

Kiquenet

unread,
Apr 9, 2015, 1:57:58 PM4/9/15
to altnet-...@googlegroups.com
Hola a todos.

Estoy colaborando con unos compañeros para desplegar un servicio. 

El proyecto está hecho con VS 2010, compilado con .NET 4.0.

El sitio web es un directorio virtual.

Intento configurarlo para acceder por https



Sin embargo obtengo un error

Could not find a base address that matches scheme https for the endpoint with binding WSHttpBinding. Registered base address schemes are [http].
o
Could not find a base address that matches scheme https for the endpoint with binding BasicHttpBinding. Registered base address schemes are [http].

Googleando, he visto distintas configuraciones e ido probando alternativas para serviceMetadata, bindings, baseAddresses, ..

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

 <bindings>

 

      <basicHttpBinding>

        <binding name="SecureTransportOnly">

          <security mode="Transport">

            <transport clientCredentialType="None" proxyCredentialType="None" realm="" />

          </security>

        </binding>

 

        <binding name="NoSecure">

          <security mode="None"><transport clientCredentialType="None"/></security>

        </binding>

       

      </basicHttpBinding>

     

      <wsHttpBinding>

        <binding name="SecureTransportOnly">

          <security mode="Transport">

              <transport clientCredentialType="None" proxyCredentialType="None" realm="" />

          </security>

        </binding>

 

      </wsHttpBinding>

    </bindings>

 

   <endpoint

            address=""

            binding="basicHttpBinding"

            bindingConfiguration="SecureTransportOnly"

            name="xxxActualServiceEndPoint"

            bindingNamespace="https://pruebaslba.xxxx.net/ServicioPyS"

            contract="IxxxActualService">

 

<endpoint address="mex" binding="mexHttpBinding o mexHttpsBinding" contract="IMetadataExchange"/>

     

Hasta probé  

  <!--<host>

          <baseAddresses>

            <add  baseAddress="https://pruebaslba.xxxx.nethttps://pruebaslba.xxxx.net/ServicioPyS"/>

          </baseAddresses>

        </host>-->

 

          <!--<identity>

            <dns value="localhost" />

          </identity>-->


No sé dónde puede estar el problema.

Lo que para mi es desconocido es el atributo bindingNamespace="https://pruebaslba.xxxx.net/ServicioPyS"


Por lo demás, todas las configuraciones que probé venían en foros donde se solucionaba el mismo mensaje de error que aparece.


Gracias por su gentil ayuda, espero puedan ayudarme.

Miguel Eduardo Román Martínez

unread,
Apr 9, 2015, 11:38:38 PM4/9/15
to altnet-...@googlegroups.com
Que tal, asumo que lo que no te permite es agregar la referencia desde visual studio al servicio, creo que el problema puede estar relacionado con el IMetadataExchange que es necesario para exponer la metadata del servicio.



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

y en el service behaviors se habilita el https:

<serviceMetadata httpsGetEnabled="true"/>

Creo que esto podría ser. espero te sea de utilidad.

Saludos,
Miguel


--
Has recibido este mensaje porque estás suscrito al grupo "AltNet-Hispano" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a altnet-hispan...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a altnet-...@googlegroups.com.
Visita este grupo en http://groups.google.com/group/altnet-hispano.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Kiquenet

unread,
Apr 10, 2015, 1:02:27 PM4/10/15
to altnet-...@googlegroups.com
Gracias, sí, había probado esas configuraciones. Finalmente, logré más información de los compañeros de Sistemas.

El sitio web está en 2 servidores de preproducción: preiis01 y preiis02. No está configurado SSL.

A la url http://preiis01/ServicioPyS/Service.svc?wsdl puedo acceder e invocar al servicio y funciona bien (todo por http)

La url de https://pruebaslba.xxxx.net/ServicioPyS/Service.svc?wsdl se refiere al Balanceador (F5 creo que es), que permite acceso desde fuera (acceso público), y ahí parece está configurado el SSL. Los detalles no los conozco, es de ámbito de sistemas.

El problema es relativo al WSDL

 
< - <wsdl:service name="ActualService">
- <wsdl:port name="ActualServiceEndPoint"binding="i0:ActualServiceEndPoint">
  </wsdl:port>
  </wsdl:service>
 
  Con la url del WSDL del balanceador el problema que la parte de soap:address location no la genera bien (la pone como http)
 
 https://pruebaslba.xxxx.net/ServicioPyS/Service.svc?wsdl 
 
- <wsdl:service name="ActualService">
- <wsdl:port name="ActualServiceEndPoint"binding="i0:ActualServiceEndPoint">
  </wsdl:port>
  </wsdl:service>
 
 
   Por eso la solución rápida que encontré fue modificar el WSDL (singlefile) manualmente  (la parte de soap:addresslocation y poner httpS)  y ponerlo en https://pruebaslba.xxxx.net/ServicioPyS/WSDL/ServiceWsdlModificado.Single.wsdl
 
 
     <wsdl:service name="ActualService">
       <wsdl:port name="ActualServiceEndPoint"binding="tns:ActualServiceEndPoint">
            <soap:addresslocation="https://pruebaslba.xxxx.net/ServicioPyS/Service.svc/Service.svc"/>
       </wsdl:port>
    </wsdl:service>


s               Seguramente hay una forma de hacerlo sin tener que hacer esa modificación manual del WSDL, desconozco esos temas si el sitio web en el IIS no es SSL, y sin embargo en la llamada desde internet a través de Load Balancer se hace a través de SSL.
                Cómo podría hacerse y tener una solución sólida al respecto?

   Gracias de antemano.


 
Reply all
Reply to author
Forward
0 new messages