2010-09-04 79 views
0

我有一个服务与同一台计算机上的其他服务通过命名管道进行通信。一切正常,如果我第一次启动服务,但一段时间后,我得到这个异常:WCF给我“操作无法完成,因为管道已关闭。”超时异常

“管道连接被中止,因为管道的异步读取没有在00:02:00分配的超时内完成。分配给此操作的时间可能是更长时间的一部分。“其中有一个内部异常说:“操作不能完成,因为管道关闭了,这可能是由于管道另一端的应用程序退出造成的。”而我正在做服务之间的任何呼叫。

这些服务是pub/sub机制的一部分。我有不同的客户端调用服务,该服务具有PerSession instancecontextmode。客户端通过netTcp绑定连接并每隔30秒发送一次keepalive以保持其tcp会话的活跃状态,以便服务可以回调客户端。然后,我有另一个服务,它是一个单一服务,其中所有其他服务实例通过命名管道绑定连接,而第二个绑定的目的是路由事件。我担心这里的架构可能与我的问题有关。

+0

发表一小段代码,以便我们仔细阅读。 – hydrogen 2010-09-04 23:07:50

+0

尝试显示相同的代码片段,您的服务合同,服务行为等。可能会有一些并发问题,并且您的服务可能会因客户端=>超时而死锁。 – 2010-09-05 09:10:27

回答

0

我重构了单独的PubSub库中的所有代码,所以我有一个通用框架来处理wcf上的pub/sub。重构后,错误不再出现?

在重构之前,我注意到我只有在连接了调试器时才得到异常。

+0

你把每个数字都说出来了吗?我遇到同样的问题,只在调试过程中发生超时。 – 2016-05-25 16:33:19