В качестве базового адреса можно использовать только абсолютный URI.

Пожалуйста, помогите получить исключение в using (ServiceHost host = new ServiceHost(typeof(HelloService.HelloService))) в приведенном ниже коде.

Исключение: в качестве базового адреса можно использовать только абсолютный URI.

Хост-приложение WCF

    class Program
    {
        static void Main()
        {
            using (ServiceHost host = new ServiceHost(typeof(HelloService.HelloService)))
            {
                host.Open();
                Console.WriteLine("Service Started");
                Console.ReadLine();
            }
        }
    }

Реализация контракта

    public class HelloService : IHelloService
    {
        public string GetMessage(string Name)
        {
            return "Hello" + Name;
        }
    }

Договор

[ServiceContract]
    public interface IHelloService
    {
        [OperationContract]
        string GetMessage(string Name);
    }

App.Config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.serviceModel>
    <services>
      <service name="HelloService.HelloService" behaviorConfiguration="mexBehaviour">
        <endpoint address="HelloService" binding="basicHttpBinding" contract="HelloService.IHelloService">
        </endpoint>
        <endpoint address="HelloService" binding="netTcpBinding" contract="HelloService.IHelloService">
        </endpoint>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange">
        </endpoint>
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:8080/HelloService"/>
            <add baseAddress="net.tcp//localhost:8090/HelloService"/>
          </baseAddresses>
        </host>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="mexBehaviour">
          <serviceMetadata httpGetEnabled="true"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>

person Bhuwan Pandey    schedule 12.06.2015    source источник
comment
Вы знаете, что такое URI? Вы знаете, что такое абсолютный URI? Вы видите какие-либо URI в том, что вы разместили? Есть ли среди них не абсолютные? Обратите особое внимание на те, которые являются базовыми адресами.   -  person John Saunders    schedule 13.06.2015
comment
только что столкнулся с той же проблемой из учебников kudVenkat. благодаря вашему вопросу.   -  person Dinav Ahire    schedule 18.08.2015


Ответы (3)


Я считаю, что вам не хватает двоеточия (:):

<add baseAddress="net.tcp//localhost:8090/HelloService"/>

должно быть

<add baseAddress="net.tcp://localhost:8090/HelloService"/>
person John Saunders    schedule 12.06.2015

<endpoint address="HelloService"...

Должно быть

<endpoint address="/HelloService"...

См. https://msdn.microsoft.com/en-us/library/ms733749(v=vs.110).aspx

person Ron Beyer    schedule 12.06.2015
comment
Нужно ли писать адрес конечной точки=/HelloService и baseAddress=localhost:8080 - person Bhuwan Pandey; 12.06.2015
comment
Да, я так думаю, хотя вы должны указать http или net.tcp. - person Ron Beyer; 12.06.2015
comment
Я думаю, что он принимает базовый адрес + адрес конечной точки как абсолютный адрес... поэтому в моем случае это будет localhost:8080/HelloService но он не работает - person Bhuwan Pandey; 12.06.2015

Короче говоря, это ошибка, связанная с базовым адресом. Поэтому проверьте, правильно ли вы ввели базовый адрес.

Ошибка:

<add baseAddress=" &quot;http://localhost:8732/Design_Time_Addresses/WcfServiceLibraryShop/IStudent/&quot;&gt;" />

Решено:

<add baseAddress=" http://localhost:8732/Design_Time_Addresses/WcfServiceLibraryShop/IStudent/" />
person Hitanshi Mehta    schedule 04.10.2018