WCF: динамический адрес для ссылки на сервис на клиенте - PullRequest
2 голосов
/ 16 марта 2011

В основном у меня есть приложение, которое должно использовать службу WCF (Calculator.svc). Во время отладки служба размещается на моем локальном компьютере, но при выпуске служба размещается на сервере IIS.

Адрес отладки: http://localhost/MyProj/Services/Calculator.svc
Адрес релиза: http://www.mycompany.com/Services/Calculator.svc

Если я не добавлю ссылку на службу и не создаю службу вручную, это больше не проблема. Но если я добавлю ссылку на службу на свой адрес локального хоста, то как мне ее динамически изменить в режиме выпуска?


ПРИМЕЧАНИЕ. Я понимаю, что могу создать новый CalculatorClient и кормить в своем собственном Binding и EndpointAddress, но это ли правильный способ сделать это?
CalculatorClient client;

#if NOT DEBUG
Binding binding = new BasicHttpBinding("MyConfig");
EndpointAddress remoteAddress = new EndpointAddress("http://www.mycompany.com/Services/Calculator.svc");

client = new CalculatorClient(binding, remoteAddress);

#else
client = new CalculatorClient();
#endif

Есть ли более простой или правильный способ сделать это?

1 Ответ

1 голос
/ 16 марта 2011

Обычно у вас есть два варианта:

1) Измените значения в app.config в вашем скрипте сборки / развертывания.

2) Используйте один и тот же адрес для обоих.На вашем компьютере разработчика это можно настроить, добавив запись в вашем файле HOSTS, указывающую www.mycompany.com на localhost.После этого вы настраиваете веб-сайт в iis для заголовка узла www.mycompany.com и обслуживаете проект оттуда.

...