2011-01-04 10 views
5

En un servicio WCF tengo un enlace de punto final establecido como wsHttpBinding. Sin embargo, cuando uso Visual Studio para agregar la referencia de servicio, mis clientes app.config muestran el enlace como basicHttpBinding. ¿Alguien sabe por qué esto puede estar pasando?wsHttpEnlace cambios en basicHttpBinding en el cliente app.config

Mi punto final en el servicio web.config (alojado en IIS 7.5). Obtiene la dirección de baseAddresses

<endpoint address="" 
    binding="wsHttpBinding" 
    bindingConfiguration="wsHttpServiceBinding" 
    contract="MyProject.IMyService" /> 

app.config Cliente:

<client> 
    <endpoint address="http://example.com/MyService.svc" 
    binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_MyService" 
    contract="Service.MyService" name="BasicHttpBinding_MyService" /> 
</client> 
+3

Lo más probable es que su configuración no se use y su cliente se construya desde la configuración predeterminada. Compruebe que el nombre en su elemento de servicio sea el mismo que el tipo de servicio en la directiva ServicHost (archivo .svc), incluidos los espacios de nombres. También puedes verificar esto en WSDL. –

+0

No mencioné esto en el post porque estaba intentando mantenerlo simple, pero tengo dos enlaces, el otro es net.tcp, que aparece sin problemas, de ahí mi confusión. – Cragly

Respuesta

7

- Ladislav Mrnka me señaló en la dirección correcta con esto. Muchas gracias.

Traté de mantener la pregunta simple ya que pensé que la respuesta podría ser directa. Sin embargo, debería haber explicado mi configuración con un poco más de detalle ya que aquí es donde se encuentra la respuesta a mi problema.

En lugar de que mi contrato de servicio (IMyService) resida en mi aplicación de servicio WCF lo tuve en otro proyecto de dominio donde guardo todas mis interfaces para que puedan reutilizarse en muchos proyectos diferentes. En mi aplicación de servicio WCF .web.config, tenía el nombre del servicio apuntando al proyecto de la interfaz y no a la implementación. Esto provocó que VS2010 (svcutil.exe) creara un proxy y config basados ​​en configuraciones predeterminadas (supongo que reside en machine.config (para WCF 4)).

Por lo tanto, para resumir para cualquier otra persona que pueda encontrarse con este problema, fue el nombre del servicio que apunta a la ubicación incorrecta. Asegúrese de que el nombre del servicio apunte a la implementación (generalmente en la aplicación de servicio WCF - MyProject.MyService) y que el contrato punto final apunta al contrato de servicio (en la aplicación de servicio WCF o proyecto externo - MyProject.IMyService u AnotherProject.Interfaces.IMyService)

Gracias por su ayuda.

Cuestiones relacionadas