使用命名管道的WCF错误“无端点侦听”

时间:2011-05-04 10:16:07

标签: c# wcf

我正在使用WCF和.NET 3.5我正在使用命名管道,但不断收到错误

  

没有终点收听   net.pipe:// localhost /可能的测试   接受消息。这通常是   由不正确的地址或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 个答案:

答案 0 :(得分:4)

在服务器端,在创建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 :(得分:1)

这可能是:

  • 您将其作为Windows服务运行且服务未运行
  • 您将其作为控制台应用程序运行,并且没有console.readline,因此它只是存在
  • 您正在两台不同的计算机上运行客户端和服务器,以便localhost不会使用该服务进入计算机。

答案 2 :(得分:0)

如果您收到的错误是在您的网址上找不到net.pipe地址(即http://localhost:1234/MyService/etc/),则可以解决此根问题的另一种可能性是确保Net.Pipe Listener Adapter Windows服务是开始。 (我也启动了Net.Tcp监听器适配器)

在某些情况下,似乎没有启用或启动该服务,尤其是在部署到可能没有安装许多主动使用这些服务的开发工具的远程服务器时。启动服务修复了问题。