WCF-Конфигурация обмена метаданными - PullRequest
2 голосов
/ 11 марта 2010

Я определил две конечные точки в моем файле App.Config как

 <system.serviceModel>
    <services>
      <service 
              name="HostDirectAddress.ITestService" 
              behaviorConfiguration="behaviorConfig">

      <endpoint 
                address="net.tcp://localhost:9000/ITestService"
                binding="netTcpBinding"
                contract="HostDirectAddress.ITestServiceContract"/>

    <endpoint
                address="http://localhost:9000/mex"
                binding="mexHttpBinding"
                contract="IMetadataExchange" />

    </service>
   </services>
        <behaviors>
           <serviceBehaviors>
            <behavior name="behaviorConfig">
              <serviceMetadata httpGetEnabled="true"/>
              <serviceDebug includeExceptionDetailInFaults="True"/>
            </behavior>
          </serviceBehaviors>
 </behaviors>
</system.serviceModel>

Мой клиент звонит

static void Main(string[] args)
{
      ServiceHost host = 
        new ServiceHost(typeof(HostDirectAddress.ITestService));
      host.Open();
      Console.WriteLine("....Service is Ready to Consume...");
      Console.ReadLine();
 }

При попытке запустить хост я получил следующую ошибку

Свойство HttpGetEnabled ServiceMetadataBehavior имеет значение true, а свойство HttpGetUrl является относительным адресом, но базовый адрес http отсутствует. Либо укажите базовый адрес http, либо установите абсолютный адрес HttpGetUrl.

Как это исправить?

1 Ответ

5 голосов
/ 11 марта 2010

Сообщение об ошибке говорит вам, как это исправить!

1) Добавить базовый адрес

<service 
    name="HostDirectAddress.ITestService" 
    behaviorConfiguration="behaviorConfig">
    <host>
       <baseAddresses>
          <add baseAddress="http://localhost:9000/" />
       </baseAddresses>
    </host>
    <endpoint
            address="mex"
            binding="mexHttpBinding"
            contract="IMetadataExchange" />

OR

2) Определите фиксированный и полный HTTP-адрес в поведении вашей службы:

<behavior name="behaviorConfig">
    <serviceMetadata 
        httpGetEnabled="true"
        httpGetUrl="http://localhost:9000/mex" />
    <serviceDebug includeExceptionDetailInFaults="True"/>
</behavior>

Делай одно или другое - и все должно работать нормально.

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