WCF: динамический адрес для ссылки на службу на клиенте

По сути, у меня есть приложение, которому необходимо использовать службу 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

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


person michael    schedule 16.03.2011    source источник


Ответы (1)


В основном у вас есть два варианта:

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

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

person Klaus Byskov Pedersen    schedule 16.03.2011