291 votos

El esquema de URI proporcionado 'https' es inválido; se esperaba 'http'. Nombre del parámetro: vía

Estoy tratando de hacer un servicio WCF sobre basicHttpBinding para ser utilizado a través de https. Aquí está mi archivo web.config:

...

...

Estoy conectando utilizando WCFStorm, que es capaz de recuperar todos los metadatos correctamente, pero cuando llamo al método real obtengo:

El esquema de URI proporcionado 'https' es inválido; se esperaba 'http'. Nombre del parámetro: via

249voto

Jojo Sardez Puntos 4727

Intente agregar credenciales de mensaje en su app.config como:

61voto

eidylon Puntos 2579

Agregando esto como una respuesta, solo porque no se puede hacer mucho formato elegante en los comentarios.
Tenía el mismo problema, excepto que estaba creando y enlazando mi cliente de servicio web completamente en código.
La razón fue que la DLL se estaba cargando en un sistema que prohibía el uso de archivos de configuración.

Aquí está el código que necesitaba ser actualizado para comunicarse a través de SSL...

Public Function GetWebserviceClient() As WebWorker.workerSoapClient
    Dim binding = New BasicHttpBinding()
    binding.Name = "WebWorkerSoap"
    binding.CloseTimeout = TimeSpan.FromMinutes(1)
    binding.OpenTimeout = TimeSpan.FromMinutes(1)
    binding.ReceiveTimeout = TimeSpan.FromMinutes(10)
    binding.SendTimeout = TimeSpan.FromMinutes(1)

    '// AQUÍ ESTÁ LA PARTE IMPORTANTE PARA SSL
    binding.Security.Mode = BasicHttpSecurityMode.Transport

    Dim endpoint = New EndpointAddress("https://myurl/worker.asmx")

    Return New WebWorker.workerSoapClient(binding, endpoint)
End Function

31voto

pattersonc Puntos 878

¿Estás ejecutando esto en el Cassini (vs servidor de desarrollo) o en IIS con un certificado instalado? He tenido problemas en el pasado tratando de conectar puntos finales seguros en el servidor web de desarrollo.

Aquí está la configuración de enlace que me ha funcionado en el pasado. En lugar de basicHttpBinding, utiliza wsHttpBinding. No sé si eso es un problema para ti.

y el punto final

También asegúrate de cambiar la configuración del cliente para habilitar la seguridad de transporte.

20voto

Lijo Puntos 4002

Tuve la misma excepción en un escenario de enlace personalizado. Cualquiera que use este enfoque, también puede revisar esto.

En realidad estaba agregando la referencia del servicio desde un archivo WSDL local. Se agregó con éxito y se agregó el enlace personalizado requerido al archivo de configuración. Sin embargo, el servicio real era https; no http. Así que cambié el elemento httpTransport a httpsTransport. Esto solucionó el problema.

Referencias

  1. WCF con enlace personalizado en http y https

19voto

Randy Staats Puntos 331

Tuve exactamente el mismo problema que el OP. Mi configuración y situación eran idénticas. Finalmente lo reduje a ser un problema en WCFStorm después de crear una referencia de servicio en un proyecto de prueba en Visual Studio y confirmar que el servicio funcionaba. En Storm necesitas hacer clic en la opción de configuración "Config" (NO EN EL "Client Config"). Después de hacer clic en eso, haz clic en la pestaña "Security" en el diálogo que aparece. Asegúrate de que el "Tipo de autenticación" esté configurado en "Ninguno" (el valor predeterminado es "Autenticación de Windows"). ¡Listo, funciona! Siempre pruebo mis métodos en WCFStorm mientras los estoy desarrollando, pero nunca he intentado usarlo para conectarme a uno que ya ha sido configurado en SSL. ¡Espero que esto ayude a alguien!

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X