Клиент WCF не считает адрес хоста - PullRequest
2 голосов
/ 06 декабря 2011

У меня есть следующий файл конфигурации для службы WCF.В конфиге определен хост.Тем не менее, когда я печатаю адрес службы от клиента, он не знает о хосте.Результат печати:

http://localhost:3187/Service1.svc/MyFolder

Почему не учитывается имя хоста?Какую модификацию нам нужно для этого сделать?

Примечание. Я работаю с VS 2010 для запуска веб-сайта службы и клиента.

        Service1Client myClientService = new Service1Client();
        Response.Write(myClientService.Endpoint.Address);

Конфигурация клиента (создается автоматически Visual Studio)

    <client>
  <endpoint address="http://localhost:3187/Service1.svc/MyFolder"
    binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IService1"
    contract="MyWCFReference.IService1" name="WSHttpBinding_IService1">
    <identity>
      <userPrincipalName value="U16990@ustr.com" />
    </identity>
  </endpoint>
</client>

Конфигурация на стороне сервера:

<services>

  <!--MyService-->
  <service name="MyWCFServiceApplication.MyService"
           behaviorConfiguration="WeatherServiceBehavior">

    <host>
      <baseAddresses>
        <add baseAddress="http://localhost:80/ServiceModelSamples/FreeServiceWorld"/>
      </baseAddresses>
    </host>

    <endpoint address="MyFolder"
              binding="wsHttpBinding"
              contract="MyWCFServiceApplication.IService1" />

    <endpoint address="mex"
              binding="mexHttpBinding"
              contract="IMetadataExchange" />
  </service>

</services>


  <behaviors>

  <serviceBehaviors>

    <behavior name="WeatherServiceBehavior">
      <serviceMetadata httpGetEnabled="true"/>
      <serviceDebug includeExceptionDetailInFaults="False"/>
    </behavior>

  </serviceBehaviors>

</behaviors>

<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />

Ответы [ 2 ]

2 голосов
/ 06 декабря 2011

Когда служба WCF размещается в процессе ASP.NET через IIS или сервер разработки ASP.NET (он же Cassini ), параметр baseAddresses в конфигурации службыфайл игнорируется, так как сервис всегда будет доступен через URL-адрес файла SVC .

Поэтому URL-адрес, который вы видите на клиенте, является правильным:

http://localhost:3187/Service1.svc/MyFolder

Как видите, базовый адрес службы становится URL-адресом файла SVC на веб-сервере.

1 голос
/ 06 декабря 2011

Вы говорите о клиенте WCF - но опубликованная вами конфигурация содержит конфигурацию только для службы (на стороне сервера) ... (раздел <services>).

Я не вижу никакой конфигурации клиента в том, что вы опубликовали - в вашей конфигурации где-то должен быть раздел <client>

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