Estoy tratando de hacer un servicio WCF sobre basicHttpBinding para usarlo sobre https. Aquí está mi web.config:
<!-- language: xml -->
<service behaviorConfiguration="MyServices.PingResultServiceBehavior"
name="MyServices.PingResultService">
<endpoint address=""
binding="basicHttpBinding"
bindingConfiguration="defaultBasicHttpBinding"
contract="MyServices.IPingResultService">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
</service>
...
<bindings>
<basicHttpBinding>
<binding name="defaultBasicHttpBinding">
<security mode="Transport">
<transport clientCredentialType="None"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
...
<behaviors>
<serviceBehaviors>
<behavior name="MyServices.UpdateServiceBehavior">
<serviceMetadata httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
Me estoy conectando usando WCFStorm, que puede recuperar todos los metadatos correctamente, pero cuando llamo al método real obtengo:
El esquema de URI proporcionado 'https' no es válido; esperado 'http'. Nombre del parámetro: vía
Respuestas:
Intente agregar credenciales de mensaje en su aplicación. Configure como:
fuente
Agregando esto como respuesta, solo porque no puede hacer mucho formato elegante en los comentarios.
Tuve el mismo problema, excepto que estaba creando y vinculando mi cliente de servicio web completamente en código.
La razón es que la DLL se estaba cargando en un sistema, lo que prohibió el uso de archivos de configuración.
Aquí está el código, ya que necesitaba actualizarse para comunicarse a través de SSL ...
fuente
Cambiar de
a
en su archivo web.config. Este cambio le permitirá usar https en lugar de http
fuente
¿Está ejecutando esto en Cassini (vs dev server) 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
, lo usawsHttpBinding
. No sé si eso es un problema para ti.y el punto final
Además, asegúrese de cambiar la configuración del cliente para habilitar la seguridad de transporte.
fuente
Tuve la misma excepción en un
custom binding
escenario. Cualquiera que use este enfoque, puede verificar esto también.En realidad estaba agregando la referencia de servicio de un
local WSDL
archivo. 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 comohttpsTransport
. Esto solucionó el problemaReferencias
fuente
Tuve exactamente el mismo problema que el OP. Mi configuración y situación eran idénticas. Finalmente lo reduje a 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 estaba funcionando. En Storm, debe hacer clic en la opción de configuración "Configuración" (NO LA "Configuración del cliente"). Después de hacer clic en eso, haga clic en la pestaña "Seguridad" en el cuadro de diálogo que aparece. Asegúrese de que "Tipo de autenticación" esté configurado en "Ninguno" (el valor predeterminado es "Autenticación de Windows"). Presto, funciona! Siempre pruebo mis métodos en WCFStorm mientras los estoy construyendo, pero nunca he intentado usarlo para conectarme a uno que ya está configurado en SSL. ¡Espero que esto ayude a alguien!
fuente
Me encontré con el mismo problema, así es como resultó mi solución al final:
Básicamente reemplacé cada aparición de Http con Https. Puede intentar agregar ambos si lo prefiere.
fuente
Si hace esto programáticamente y no en web.config es:
fuente
Es bueno recordar que los archivos de configuración se pueden dividir en archivos secundarios para facilitar los cambios de configuración en diferentes servidores (desarrollo / demostración / producción, etc.), sin tener que volver a compilar código / aplicación, etc. Por ejemplo, los usamos para permitir que los ingenieros en el sitio realizar cambios de punto final sin tocar realmente los archivos 'reales'.
El primer paso es mover la sección de enlaces fuera de la aplicación WPF.Config en su propio archivo separado.
La sección de comportamientos está configurada para permitir tanto http como https (no parece afectar la aplicación si ambos están permitidos)
Y trasladamos la sección de enlaces a su propio archivo;
En el archivo bindings.config cambiamos la seguridad según el protocolo
Ahora los ingenieros en el sitio solo necesitan cambiar el archivo Bindings.Config y el Client.Config donde almacenamos la URL real para cada punto final.
De esta manera, podemos cambiar el punto final de http a https y viceversa para probar la aplicación sin tener que cambiar ningún código.
Espero que esto ayude.
fuente
Para volver a cerrar la pregunta en el OP:
Los tutoriales de WCFStorm abordan este problema al trabajar con IIS y SSL .
Su solución funcionó para mí:
El último punto (1) en efecto significa eliminar el prefijo de espacio de nombres que VS antepone al atributo del contrato de punto final, por defecto "ServiceReference1"
así que en la app.config que carga en WCFStorm que desea para ListsService:
fuente
Necesitaba los siguientes enlaces para que el mío funcionara:
fuente
¡wsHttpBinding es un problema porque silverlight no lo admite!
fuente