wake-up-neo.net

Wechseln Sie den URL-Pfad der WCF-Web-Service-Referenz dynamisch durch die Konfigurationsdatei

Wie können Sie den URL-Pfad der WCF-Web-Service-Referenz dynamisch über die Konfigurationsdatei wechseln?

45

Möchten Sie nur die in der Konfiguration enthaltene URL mit einer anderen URL überschreiben? Angenommen, Sie haben einen Testservice und einen Live-Service. Sie können das einfach tun.

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

Woher diese URL kommt, wo immer Sie möchten

78
Erin

Nur um die Antwort von Erin zu erweitern: -

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

Es gibt keine dynamische Umschaltung. Jedes Mal, wenn Sie eine andere URL verwenden möchten, müssen Sie eine neue Instanz von Service Proxy (Client) erstellen und den EndpointAddress- oder enpoint-Konfigurationsnamen an den Konstruktor übergeben. 

3
Ladislav Mrnka

sicher können Sie dies tun, schauen Sie hier: Wie konfiguriere ich Clients für einen WCF-Dienst?

es ist absolut normal, in der Entwicklung auf localhost zu verweisen und die Adresse (URL) in der Produktion in der web.config zu ändern

0
Davide Piras

sie können keine Endpunkt-URL nach einem Aufruf eingeben.

Z.B.

in diesem Fall erhalten Sie eine Antwort von NEWURL:

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

wenn Sie jedoch eine Methode aufrufen, bevor Sie die URL ändern, wird die URL aus der app.config verwendet, wie im nächsten Beispiel:

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