2011-05-25 10 views
6

Necesito mi servicio para consumir otros servicios, y necesito configurar estas dependencias en el código. ¿Cómo hago esto?¿Cómo agrego los puntos finales del cliente WCF mediante programación?

Esto es muy simple en la configuración a través del siguiente (ejemplo):

<client> 
    <endpoint name="registerService" 
      address="http://127.0.0.1/registration/" binding="basicHttpBinding"  
      contract="*"/> 
    </client> 

Pero por alguna razón, encontrar el código equivalente no es tan fácil como pensaba que sería.

+0

¿Está utilizando un proxy generado ("Agregar referencia de servicio ..."), o crear instancias directamente en contra de un contrato? –

+0

Sin proxy generado. De hecho, estoy usando esto desde el RoutingService (nuevo en WCF 4) que necesito configurar a través del código. Pero este detalle no debería afectar demasiado, ¿verdad? –

Respuesta

5

Si está utilizando el proxy generado por Visual Studio (a través de "Agregar referencia de servicio ..."), entonces está usando la clase abstracta ClientBase & tendrá una cantidad de constructores que le permitirán pasar una sección de configuración, un punto final, una unión etc.

http://msdn.microsoft.com/en-us/library/ms576141.aspx

Y si estás instancias de un ChannelFactory entonces de nuevo tiene un número de constructores a utilizar.

http://msdn.microsoft.com/en-us/library/ms576132.aspx

// create bindings & endpoints 
var binding = new System.ServiceModel.BasicHttpBinding(); 
var endpoint = new EndpointAddress("http://localhost/MyService.svc"); 

var factory = new ChannelFactory<IMyService>(binding, endpoint); 

var channel = factory.CreateChannel(); 
// then call your operations... 
channel.MyOperation(); 
+0

Gracias por su respuesta, pero ninguna de estas ayuda. Es posible que deba editar mi pregunta para que sea más específica: estoy operando en el contexto de un servicio que a su vez consume otros servicios. Quiero agregar esas dependencias programáticamente a la infraestructura de WCF. –

Cuestiones relacionadas