Гость
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / WCF Restful service & host base address / 1 сообщений из 1, страница 1 из 1
14.02.2018, 14:07
    #39601790
WinterGraveyard
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WCF Restful service & host base address
Наткнулся на следующую непонятную ситуацию: имеется некий WCF restful сервис. Работает он вполне нормально, нареканий к нему никаких нет. Конфиг к нему был стянут и скомпонован из различных примеров и статей по написанию таких сервисов - разумеется, до конца понять, что к чему в этом конфиге, не получилось.
Сам конфиг выглядит примерно так:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
<system.serviceModel>
  <services>
    <service name="RemotePrint.RemotePrintService" behaviorConfiguration="ServiceBehavior">
      <endpoint binding="webHttpBinding" contract="RemotePrint.IRemotePrintService" behaviorConfiguration="webHttp" />
      <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
      <host>
        <baseAddresses>
          <add baseAddress="http://10.1.230.68:8080/RemotePrintService" />
        </baseAddresses>
      </host>
    </service>
  </services>
  <behaviors>
    <serviceBehaviors>
      <behavior name="ServiceBehavior">
        <serviceMetadata httpGetEnabled="true" />
        <serviceDebug includeExceptionDetailInFaults="true" />
      </behavior>
      <behavior>
        <serviceMetadata httpGetEnabled="true" />
        <serviceDebug includeExceptionDetailInFaults="false" />
      </behavior>
    </serviceBehaviors>
    <endpointBehaviors>
      <behavior name="webHttp">
        <webHttp />
      </behavior>
    </endpointBehaviors>
  </behaviors>
  <serviceHostingEnvironment minFreeMemoryPercentageToActivateService="0" />
</system.serviceModel>


Обращение к сервису делается посредством GET-запросов из приложения на андроиде - т.е. по предоставляемым URL от контрактов методов сервисного интерфейса. Эти запросы формируются динамически, и в них напрямую подставляется IP-адрес хоста сервиса.
Недавно понадобилось внести в сервис некоторые изменения. Поскольку вся логика и контракты сервиса живут в отдельной сборке, я просто захостил сервис в консольном приложении, там же и отлаживал - опять-таки, всё работает прекрасно. Но: я вдруг обратил внимание, что IP-адрес в базовом адресе хоста (host/baseAddress/add/@baseAddress) совсем не совпадает с IP-адресом компьютера, на котором физически работает (разрабатывается и отлаживается) сервис. Заглянул в конфиг на сервере, где расположена релизная версия сервиса - то же самое, IP-адрес не имеет ничего общего с реальным IP-адресом сервера. Однако всё работает. Вопрос - почему?
На рантайме базовый адрес хоста не меняется, это проверено. Думал, этот адрес в WCF restful не нужен, и убрал его - нет, нужен, без него старт сервиса валится с ошибкой

Код: plaintext
1.
2.
System.InvalidOperationException: Для конечной точки с
 привязкой WebHttpBinding не удалось найти базовый адрес, соответствующий схеме http.
 Зарегистрированные схемы базовых адресов - [].
...
Рейтинг: 0 / 0
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / WCF Restful service & host base address / 1 сообщений из 1, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]