Ошибка WCF "нет прослушивания конечной точки" с именованными каналами - PullRequest
3 голосов
/ 04 мая 2011

Я использую WCF с .NET 3.5 Я использую именованные каналы, но получаю сообщение об ошибке

Конечная точка не прослушивала net.pipe: // localhost / Test, который мог принять сообщение. Это часто вызвано неправильным адресом или SOAP действие.

Я следовал учебному пособию http://www.switchonthecode.com/tutorials/wcf-tutorial-basic-interprocess-communication, но проблема остается. Конечные точки как на клиенте, так и на сервере одинаковы (я проверял орфографию и т. Д.). Конфигурационного файла для этого проекта нет, но конфиг находится в коде.

РЕДАКТИРОВАТЬ: Код (клиент):

  ChannelFactory<ITest> pipeFactory =
    new ChannelFactory<ITest>(
    new NetNamedPipeBinding(),
    new EndpointAddress(
    "net.pipe://localhost/test"));

       ITest test= pipeFactory.CreateChannel();

            test.doStuff();

SERVER:

        serviceHost = new ServiceHost(typeof(Test), new Uri("net.pipe://localhost"));

        serviceHost.AddServiceEndpoint(typeof(ITest), new NetNamedPipeBinding(), "test");

        File.Create(@"C:\test.txt");

        serviceHost.Open();

Спасибо

Ответы [ 3 ]

4 голосов
/ 04 мая 2011

На стороне сервера не включайте базовые адреса при создании экземпляра ServiceHost. Вместо этого укажите полный адрес конечной точки при добавлении конечной точки службы:

serviceHost = new ServiceHost(typeof(Test));
serviceHost.AddServiceEndpoint(typeof(ITest), new NetNamedPipeBinding(), new EndpointAddress("net.pipe://localhost/test"));
File.Create(@"C:\\test.txt");
serviceHost.Open();
1 голос
/ 04 мая 2011

Это может быть:

  • Вы запускаете его как службу Windows, а служба не запускается
  • Вы запускаете его как консольное приложение, а консоли нет.readline, поэтому он просто существует
  • Вы запускаете клиент и сервер на двух разных машинах, так что localhost не идет на машину со службой.
0 голосов
/ 29 марта 2013

Еще одна возможность исправить эту корневую проблему, если вы получаете сообщение об ошибке, что по вашему URL-адресу нет адреса net.pipe (например, http://localhost:1234/MyService/etc/), это убедиться, что служба Windows Net.Pipe Listener Adapter запущена.(Я также запустил адаптер прослушивателя Net.Tcp)

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

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