Здесь нужно учесть две вещи:
если ваш хостинг в IIS (или WAS как часть IIS7), вы не можете установить базовый адрес - базовый адрес для вашей службы будет виртуальным каталогом, в котором находится файл MyService.svc
. Вы все еще можете установить относительные адреса, хотя
если вы используете хост самостоятельно, вы обычно добавляете базовые адреса в свою конфигурацию, так что вы можете избавить себя от необходимости прописывать полный адрес все время (но вы можете - если вы хотите это сделать).
Итак, если у вас есть MyService.svc
в виртуальном каталоге с именем MyApp
на вашем компьютере localhost
, а затем используйте эту конфигурацию:
<service name="MyService" behaviorConfiguration="Default">
<endpoint
address="wsHttp"
binding="wsHttpBinding"
contract="IMyService" />
<endpoint
address="basic"
binding="basicHttpBinding"
contract="IMyService" />
</service>
тогда ваша базовая служба «старого стиля» будет доступна по адресу:
http://localhost/MyApp/MyService.svc/basic
и ваша новая служба, управляемая wsHttp, будет доступна по адресу:
http://localhost/MyApp/MyService.svc/wsHttp
Вы можете назвать эти относительные адреса (что угодно после .../MyApp/MyService.svc
) как угодно - просто убедитесь, что они отличаются друг от друга.
Хостинг в IIS -> местоположение (виртуальный каталог) вашего * .svc файла становится вашим базовым адресом.
Если вы самостоятельно размещаете свою службу в консольном приложении или службе Windows NT, вы можете самостоятельно настроить базовые адреса:
<services>
<service name="MyService" behaviorConfiguration="Default">
<host>
<baseAddresses>
<add baseAddress="http://localhost:8185/Services/" />
</baseAddresses>
</host>
</service>
</services>
Теперь в этом случае ваша базовая служба «старого стиля» будет доступна по адресу:
http://localhost:8185/Services/basic
и ваша новая служба, управляемая wsHttp, будет доступна по адресу:
http://localhost:8185/Services/wsHttp
Вы можете определить базовый адрес для каждого транспорта, например, один для http://, один для net.tcp: // и т. д.
И, конечно, если вам действительно нужно, вы также можете определить свои полные адреса внутри элемента <endpoint>
для каждой из конечных точек службы - это дает вам полную гибкость (но работает только в сценариях с автономным хостингом).
Марк