net.pipe:// localhost /没有端点监听

时间:2009-08-07 21:52:06

标签: .net web-services wcf named-pipes

我在Windows Server 2003计算机上的单个Windows服务中托管了两个WCF服务。如果Windows服务需要访问任一WCF服务(例如发生定时事件时),它将使用公开的五个命名管道端点之一(不同的服务协定)。该服务还为两个服务中的每一个公开HTTP MetadataExchange端点,并为服务器外部的使用者公开net.tcp端点。

通常情况下效果很好,但每隔一段时间我就会得到一条看起来像这样的错误信息:

System.ServiceModel.EndpointNotFoundException:没有端点侦听net.pipe:// localhost / IPDailyProcessing可以接受该消息。这通常是由错误的地址或SOAP操作引起的。有关更多详细信息,请参阅InnerException(如果存在)。 ---> System.IO.PipeException:在本地计算机上找不到管道端点'net.pipe:// localhost / IPDailyProcessing'。    ---内部异常堆栈跟踪结束--- 服务器堆栈跟踪:    在System.ServiceModel.Channels.PipeConnectionInitiator.GetPipeName(Uri uri)    在System.ServiceModel.Channels.NamedPipeConnectionPoolRegistry.NamedPipeConnectionPool.GetPoolKey(EndpointAddress地址,Uri via)    在System.ServiceModel.Channels.ConnectionPoolHelper.EstablishConnection(TimeSpan超时)    在System.ServiceModel.Channels.ClientFramingDuplexSessionChannel.OnOpen(TimeSpan超时)    在System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan超时)    在System.ServiceModel.Channels.ServiceChannel.OnOpen(TimeSpan超时)    在System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan超时)    在System.ServiceModel.Channels.ServiceChannel.CallOpenOnce.System.ServiceModel.Channels.ServiceChannel.ICallOnce.Call(ServiceChannel频道,TimeSpan超时)    在System.ServiceModel.Channels.ServiceChannel.CallOnceManager.CallOnce(TimeSpan超时,CallOnceManager级联)    在System.ServiceModel.Channels.ServiceChannel.EnsureOpened(TimeSpan超时)    在System.ServiceModel.Channels.ServiceChannel.Call(String action,Boolean oneway,ProxyOperationRuntime operation,Object [] ins,Object [] outs,TimeSpan timeout)    在System.ServiceModel.Channels.ServiceChannel.Call(String action,Boolean oneway,ProxyOperationRuntime operation,Object [] ins,Object [] outs)    在System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall,ProxyOperationRuntime操作)    在System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage消息)

它不会可靠地发生,这是令人抓狂的,因为我不能在我想要的时候重复它。在我的Windows服务中,我也有一些定时事件和一些文件监听器,但这些都是相当罕见的事件。有没有人有任何想法,为什么我可能会遇到一个问题?任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:7)

检查服务管理控制台中是否正在运行“Net.Pipe侦听器适配器”服务。 WAS使用它来接收命名管道上的任何请求。

答案 1 :(得分:1)

我过去遇到了类似的错误,如果我没记错的话,传入/传出服务的数据有问题。在我的情况下问题是数据大小(我使用WSHttpBinding,所以有一个http默认限制)。我发现问题的方法是在相关方法中添加日志记录,查找有问题的数据,并尝试在某些调试友好的环境中重现问题,并使用您找到的数据不断发生(崩溃)。

在我的情况下,异常消息与问题无关,有时在WCF中发生。

答案 2 :(得分:0)

我不确定这是否与您的讨论密切相关,因为我从未使用.net命名管道,但我记得.net tcp套接字端点有一个已知的错误,导致“端点偶尔出现因为没有明显原因而被终止“,不幸的是,正式的MS响应是一个”解决方法“,其中涉及在通过它发送消息之前检查套接字是否仍在运行,并且在它不是的情况下重新打开它。我想认为命名的管道端点并不像“可靠的TCP端点”那样不可靠,但您可能希望查看“已知的周期性TCP套接字故障”,看它是否也扩展到命名管道。 / p>

很抱歉这不是一个真正的答案,我讨厌建议您可能必须添加检查的低效率,以确保在发送消息之前它已经启动,等等。