2011-02-18 52 views

Respuesta

75

Son solo desea anular la URL que está en la configuración en una url diferente. Digamos que tiene un servicio de prueba y un servicio en vivo. Puedes hacer esto.

client.Endpoint.Address = new EndpointAddress(Server.IsLiveServer() ? 
    @"LiveUrl" : @"TestURl"); 

Cuando los url vienen desde donde quieras

+2

¿Qué es Server.IsLiveServer() :)? – Mani

+0

Server.IsLiveServer() es solo un método personalizado (llámalo como quieras) que realiza una comprobación para determinar qué url usar. – David

+0

Server.IsLiveServer() solo está ahí para cambiar la URL según el entorno que consume la API – Anand

0

asegurarse de que puede hacer esto, echar un vistazo aquí: How to config clients for a wcf service?

es absolutamente normal para que apunte a localhost en el desarrollo y para cambiar la dirección (URL) de la producción en el web.config

+1

vi las referencias de la URL de desarrollo en 7 archivos: reference.svcmap, .xsd, .wsdl, .disco, .svcinfo y web.config. es esta configuración web.config todo lo que necesito? –

+0

¿Quiere decir que le gustaría cambiar todo eso, sobreponiendo los valores codificados al tocar la web.config? –

+0

@Martin: apuesto a que es un espacio de nombres y no su URL de desarrollo. –

4

No hay conmutación dinámica. Cada vez que desee utilizar otra URL, debe crear una nueva instancia de proxy de servicio (cliente) y pasar EndpointAddress o enrutar el nombre de configuración al constructor.

22

Sólo para ampliar la respuesta de Erin: -

MyClient client = new MyService.MyClient(); 
client.Endpoint.Address = new EndpointAddress(new Uri("insert new url here"), 
    client.Endpoint.Address.Identity, client.Endpoint.Address.Headers); 
client.Open(); 

HTH!

Cuestiones relacionadas