Служба WCF не подключается к тестовому клиенту - PullRequest
0 голосов
/ 12 июня 2019

Я получаю эту ошибку, когда запускаю тестовый клиент

Не удалось добавить службу.Метаданные службы могут быть недоступны.Убедитесь, что ваша служба работает и предоставляет метаданные.

Невозможно получить метаданные из http://localhost:50507/Service1.svc Если это служба Windows (R) Communication Foundation, к которой у вас есть доступ, убедитесь, что вы включили метаданные.публикация по указанному адресу.Для получения справки о включении публикации метаданных обратитесь к документации MSDN по адресу http://go.microsoft.com/fwlink/?LinkId=65455.WS-Metadata URI ошибки Exchange: http://localhost:50507/Service1.svc Метаданные содержат ссылку, которая не может быть разрешена: 'http://localhost:50507/Service1.svc'. Запрошенная служба'http://localhost:50507/Service1.svc' не удалось активировать.Дополнительные сведения см. В журналах диагностической трассировки сервера. HETTP GET Ошибка URI: http://localhost:50507/Service1.svc Произошла ошибка при загрузке 'http://localhost:50507/Service1.svc'. Запрос не выполнен с сообщением об ошибке: - Тип' AgeCalculator.Service1 ', предоставленный как значение атрибута Service в директиве ServiceHost, или предоставленный в элементе конфигурации system.serviceModel / serviceHostingEnvironment / serviceActivations не найден.

Я уже представил метаданные службы с помощьюследующий код в файле web.config

<system.serviceModel>
<services>
  <service name="AgeCalculator.CalculateAge" behaviorConfiguration="MetadataBehavior">
    <endpoint address=""
              binding="basicHttpBinding" contract="AgeCalculator.IService1">
    </endpoint>
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
    <endpoint address="http://localhost/Service1.svc" binding="basicHttpBinding" contract="AgeCalculator.IService1"/>
  </service>
</services>
<behaviors>
  <serviceBehaviors>
    <behavior name="MetadataBehavior">
      <!-- To avoid disclosing metadata information, set the values below to false before deployment -->
      <serviceMetadata httpGetEnabled="true"/>
    </behavior>
  </serviceBehaviors>
</behaviors>
<protocolMapping>
    <add binding="basicHttpsBinding" scheme="http" />
</protocolMapping>    
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />

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

1 Ответ

0 голосов
/ 12 июня 2019

Поскольку вы, похоже, не используете порт по умолчанию, лучше указать порт в привязке service. Измените ваше service определение следующим образом:

<services>
  <service name="AgeCalculator.CalculateAge" behaviorConfiguration="MetadataBehavior">
    <host>
      <baseAddresses>
        <add baseAddress="http://localhost:50507/" />
      </baseAddresses>
    </host>
    <endpoint address="" 
        binding="basicHttpBinding" contract="AgeCalculator.IService1" />
    <endpoint address="mex" 
        binding="mexHttpBinding" contract="IMetadataExchange"/>
    <endpoint address="http://localhost:50507/Service1.svc" 
        binding="basicHttpBinding" contract="AgeCalculator.IService1"/>
  </service>
</services>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...