2010-01-06 15 views
5

Estoy conectando un cliente WCF a un grupo de servicios, todos implementando el mismo contrato y todos en el mismo host. Esperaba que hubiera una forma de combinar las definiciones de punto final para reducir el desorden de la configuración. También preferiría no hacerlo programáticamente, solo por configuración. En este momento, mi config ha repetido muchas veces este:WCF Client configuration - base address?

<endpoint address="http://hostname/ServiceA.svc" 
     binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_MyBinding" 
     contract="ServiceReference.ISearchService" name="ServiceA"> 
</endpoint> 

<endpoint address="http://hostname/ServiceB.svc" 
     binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_MyBinding" 
     contract="ServiceReference.ISearchService" name="ServiceB"> 
</endpoint> 

// continued for ServiceC, ServiceD, etc 

Para configuraciones del servidor, hay una cierta notion of "baseAddressPrefixFilters" que se pueden utilizar para este propósito - ¿hay algo de configuración del cliente?

Respuesta

3

Existe el concepto de una dirección base en WCF; desafortunadamente, eso solo funciona si se autohospeda, p. Ej. aloje su servicio en una aplicación de consola o servicio NT. Sin embargo, eso solo funciona en el lado del servidor; no hay nada similar en el lado del cliente. En el lado del cliente, siempre debe definir la dirección de servicio completa y completa a la que su punto extremo debe conectarse.

Si aloja en IIS, la dirección de su servicio viene determinada por el nombre del servidor, el directorio virtual (y posiblemente los subdirectorios correspondientes) y el nombre del archivo * .svc utilizado para alojar el servicio en IIS. Esta es una convención de sistema fija y usted no puede influir en ella, desafortunadamente (.NET 4 traerá algún remedio a eso).

+2

¿Alguna noticia sobre cómo hacer esto con .Net 4 ahora? Estoy luchando por encontrar una solución. – flayn

+0

@flo: vea [Introducción de un desarrollador a WCF 4] (http://msdn.microsoft.com/en-us/library/ee354381.aspx) y busque 'activación sin archivo '(activación de servicio sin un físico * archivo .svc) e 'Integración de WCF con rutas de ASP.NET' que le permite usar rutas (como en ASP.NET MVC) para definir sus activaciones de servicio (le da URLs" agradables "sin la extensión * .svc) - pero esto La segunda función parece ser solo para servicios basados ​​en REST :-( –