web-dev-qa-db-fra.com

Basculer dynamiquement le chemin de l'URL de référence du service Web WCF via le fichier de configuration

Comment basculer de manière dynamique le chemin de l'URL de référence du service Web WCF via le fichier de configuration?

45
Martin Ongtangco

Voulez-vous simplement remplacer l'URL figurant dans la configuration par une autre URL? Supposons que vous ayez un service de test et un service en direct. Vous pouvez simplement faire ça.

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

D'où viennent ces URL d'où vous voulez

78
Erin

Juste pour développer la réponse d'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!

22
Phil Lambert

Il n'y a pas de commutation dynamique. Chaque fois que vous souhaitez utiliser une autre URL, vous devez créer une nouvelle instance de service proxy (client) et transmettre EndpointAddress ou le nom de configuration enpoint au constructeur. 

3
Ladislav Mrnka

assurez-vous que vous pouvez le faire, regardez ici: Comment configurer les clients pour un service wcf?

il est absolument normal de pointer vers localhost en développement et de changer l'adresse (URL) en production dans le fichier web.config

0
Davide Piras

vous ne pouvez pas essayer l’url du terminal après tout appel.

PAR EXEMPLE.

dans ce cas, vous obtiendrez la réponse de NEWURL:

MyClient client = new MyService.MyClient();
client.Endpoint.Address = new EndpointAddress("NEWURL"); 
client.Hello(); //return is hello response from NEWURL

mais si vous appelez n'importe quelle méthode avant de changer l'URL, l'URL sera utilisé depuis app.config, comme dans l'exemple suivant:

MyClient client = new MyService.MyClient();
client.Endpoint.Address = new EndpointAddress("NEWURL"); 
client.Hello(); //return is hello response from BASEURL
0
Tomáš Hovorka