Конфигурация клиента WCF - перенаправить несколько сервисов на другой хост - PullRequest
1 голос
/ 03 августа 2011

Прямо сейчас, у меня есть несколько служб в моем клиенте web.config, например:

<endpoint address="http://hostname/ServiceA.svc"
         binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_MyBinding"
         contract="ServiceReference.ISearchService" name="ServiceA">
</endpoint>

<endpoint address="http://hostname/ServiceB.svc"
         binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_MyBinding"
         contract="ServiceReference.ISearchService" name="ServiceB">
</endpoint>

и еще немного

Этот web.config делает переключениемежду средами размещения сложно и подвержено ошибкам, потому что вам нужно заменить «имя хоста» на всех и на каждом из адресов конечных точек.

Я хочу как-то добавить параметр приложения среды или что-то еще, что позволит мнеукажите хост и разрешите конечную точку, например http://{hostA}/ServiceX.svc

Нужно ли выполнять магию программно или я могу сделать это только из конфигурации?

1 Ответ

2 голосов
/ 04 августа 2011

Вам нужно будет сделать это с помощью кода - в конфигурации нет «подстановочного знака», который вы можете использовать для базового адреса в разделе <system.serviceModel / client>.Однако вы можете иметь некоторую метку-заполнитель в конфигурации (например, «localhost») и в коде сначала загрузить конфигурацию, а затем обновить имя сервера, указав фактическое значение (которое также можно сохранить в конфигурации, например, в AppSettings илигде-то еще).

var factory = new ChannelFactory<ISearchService>("ServiceA");
factory.Endpoint.Address = ReplaceServerName(factory.Endpoint.Address);
var proxy = factory.CreateChannel();
...
...