Когда вы оставляете адрес конечной точки пустым, это означает, что конечная точка просто использует соответствующий базовый адрес для своего адреса конечной точки.В качестве альтернативы вы можете настроить базовый адрес как абсолютный путь к вашей службе или, как лучший подход, написать относительные адреса для ваших конечных точек.
Когда вы размещаете свои службы в IIS, базовый адрес службы определяетсяВиртуальный каталог IIS вместе с файлом .svc.
Предположим, у вас есть файл с именем calc.svc, и вы поместите его в виртуальный каталог, соответствующий 'http://localhost:8080/calcservice'. Базовый адрес для этой службы будетbe 'http://localhost:8080/calcservice/calc.svc'.
IIS заставляет ваши конечные точки использовать этот базовый адрес, определенный в соответствии с вашим путем развертывания службы. Если вы укажете другой базовый адрес, а не соответствующий виртуальный каталог, вы получите исключение.
Рассмотрите приведенную ниже конфигурацию;
<configuration>
<system.serviceModel>
<services>
<service name="CalculatorService">
<!-- base address determined by IIS virtual directory -->
<endpoint binding="basicHttpBinding" contract="ISimpleMath"/>
<endpoint address="secure" binding="wsHttpBinding" contract="ISimpleMath"/>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
</service>
...
... адрес первой конечной точки становится таким же, как базовый адрес ('http://localhost:8080/calcservice/calc.svc'), поскольку я оставил адрес конечной точки пустым. Адрес второй конечной точки становится комбинацией базового адреса с добавлением «secure», например:'http://localhost:8080/calcservice/calc.svc/secure'. А адрес конечной точки "mex" -' http://localhost:8080/calcservice/calc.svc/mex'. Некоторым людям это может показаться немного странным, поскольку относительная часть адреса добавляется справа от имени файла, но вы должны помнить, чтоcalc.svc является частью базового адреса, поэтому он должен работать следующим образом.
Хотя вы не можете перейти к "../mex" или "../Защищенные »URL-адреса через браузер, они фактически активны, и клиенты могут использовать эти адреса.
Поведение клиента
Клиенты не знают о базовом адресе службыи не нужно поддерживать что-то подобное на своей стороне провода.В результате вы не найдете ничего связанного с базовыми адресами в объектной модели на стороне клиента или в разделе конфигурации.Клиенты просто выбирают конкретную конечную точку, которая всегда поставляется с настроенным абсолютным адресом, и этот абсолютный адрес определяет адрес, который будет использоваться во время передачи.
Выше информации, в основном взятой из превосходной статьи Аарона Сконнарда на MSDN.Я настоятельно рекомендую вам прочитать его, чтобы узнать основные принципы адресации WCF.