Конфигурация клиента WCF - базовый адрес? - PullRequest
5 голосов
/ 07 января 2010

Я подключаю клиента WCF к группе сервисов, которые реализуют один и тот же контракт и все на одном хосте. Я надеялся, что найдется способ объединить определения конечных точек, чтобы сократить беспорядок конфигурации. Я также предпочел бы не делать это программно - просто по конфигурации. Прямо сейчас мой конфиг повторяется много раз:

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

// continued for ServiceC, ServiceD, etc

Для конфигураций сервера существует понятие "baseAddressPrefixFilters" , которое можно использовать для этой цели - есть ли что-нибудь для конфигурации клиента?

1 Ответ

3 голосов
/ 07 января 2010

В WCF существует понятие базового адреса - к сожалению, это работает только при самостоятельном размещении, например разместить свой сервис в консольном приложении или службе NT. Однако это работает только на стороне сервера - на стороне клиента нет ничего подобного. На стороне клиента вы всегда должны определить полный, полный адрес службы, к которому должна подключаться ваша конечная точка.

Если вы размещаете в IIS, адрес вашей службы определяется именем сервера, виртуальным каталогом (и, возможно, подкаталогами под ним) и именем файла * .svc, используемого для размещения службы в IIS. Это соглашение с фиксированной системой, и вы, к сожалению, не можете на него повлиять (.NET 4 принесет некоторые исправления).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...