web-dev-qa-db-ja.com

構成ファイルを介してWCF Webサービス参照URLパスを動的に切り替える

構成ファイルを介してWCF Webサービス参照URLパスを動的に切り替えるにはどうすればよいですか?

46

構成内のURLを別のURLにオーバーライドするだけです。テストサービスとライブサービスがあるとします。これを行うことができます。

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

これらのURLはどこからでもアクセスできます

79
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!

23
Phil Lambert

動的な切り替えはありません。別のURLを使用するたびに、サービスプロキシ(クライアント)の新しいインスタンスを作成し、EndpointAddressを渡すか、コンストラクターに構成名を指定する必要があります。

3
Ladislav Mrnka

これを行うことができることを確認してください、ここを見てください: wcfサービスのクライアントを構成する方法?

開発中のlocalhostを指し、web.configで本番のアドレス(URL)を変更することは絶対に正常です

0
Davide Piras

呼び出し後にエンドポイントの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
0
Tomáš Hovorka