Dynamically switch WCF Web Service Reference URL p

2020-01-28 02:21发布

How do you dynamically switch WCF Web Service Reference URL path through config file ?

标签: c# asp.net wcf
5条回答
smile是对你的礼貌
2楼-- · 2020-01-28 02:54

you can´t chance endpoint url after any calling.

E.G.

in that case, you will get answer from NEWURL:

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

but if you will call any method before changing url, the url will be used from app.config, like next example:

MyClient client = new MyService.MyClient();
client.Endpoint.Address = new EndpointAddress("NEWURL"); 
client.Hello(); //return is hello response from BASEURL
查看更多
疯言疯语
3楼-- · 2020-01-28 02:55

Just to expand on the answer from 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!

查看更多
可以哭但决不认输i
4楼-- · 2020-01-28 03:00

sure you can do this, have a look here: How to config clients for a wcf service?

it is absolutely normal to point to localhost in development and to change the address (url) in production in the web.config

查看更多
Lonely孤独者°
5楼-- · 2020-01-28 03:16

Are you just wanting to override the URL that is in the config to a different url. Say you have a test service and a live service. You can just do this.

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

Where those url come from wherever you want

查看更多
够拽才男人
6楼-- · 2020-01-28 03:17

There is no dynamic switching. Each time you want to use another URL you must create new instance of service proxy (client) and pass EndpointAddress or enpoint configuration name to the constructor.

查看更多
登录 后发表回答