構成ファイルを介してWCF Webサービス参照URLパスを動的に切り替えるにはどうすればよいですか?
構成内のURLを別のURLにオーバーライドするだけです。テストサービスとライブサービスがあるとします。これを行うことができます。
client.Endpoint.Address = new EndpointAddress(Server.IsLiveServer() ?
@"LiveUrl" : @"TestURl");
これらのURLはどこからでもアクセスできます
エリンからの答えを拡張するために:-
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!
動的な切り替えはありません。別のURLを使用するたびに、サービスプロキシ(クライアント)の新しいインスタンスを作成し、EndpointAddressを渡すか、コンストラクターに構成名を指定する必要があります。
これを行うことができることを確認してください、ここを見てください: wcfサービスのクライアントを構成する方法?
開発中のlocalhostを指し、web.configで本番のアドレス(URL)を変更することは絶対に正常です
呼び出し後にエンドポイントのURLにアクセスすることはできません。
例えば。
その場合、NEWURLから回答が得られます。
MyClient client = new MyService.MyClient();
client.Endpoint.Address = new EndpointAddress("NEWURL");
client.Hello(); //return is hello response from NEWURL
ただし、URLを変更する前にメソッドを呼び出す場合、次の例のようにapp.configからURLが使用されます。
MyClient client = new MyService.MyClient();
client.Endpoint.Address = new EndpointAddress("NEWURL");
client.Hello(); //return is hello response from BASEURL