Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WCF给我”的;操作无法完成,因为管道已关闭。”;超时异常_C#_.net_Wcf - Fatal编程技术网

C# WCF给我”的;操作无法完成,因为管道已关闭。”;超时异常

C# WCF给我”的;操作无法完成,因为管道已关闭。”;超时异常,c#,.net,wcf,C#,.net,Wcf,我有一个通过命名管道与同一台机器上的其他服务进行对话的服务。如果我第一次启动服务,一切正常,但过了一段时间后,我出现了以下异常: “管道连接被中止,因为在分配的超时时间00:02:00内未完成对管道的异步读取。分配给此操作的时间可能是更长超时的一部分。”其中有一个内部异常,该异常表示:“无法完成该操作,因为管道已关闭。这可能是由于管道另一端的应用程序退出造成的 这些服务是发布/订阅机制的一部分。我有不同的客户端调用一个服务,该服务具有PerSession instancecontextmode。

我有一个通过命名管道与同一台机器上的其他服务进行对话的服务。如果我第一次启动服务,一切正常,但过了一段时间后,我出现了以下异常:

“管道连接被中止,因为在分配的超时时间00:02:00内未完成对管道的异步读取。分配给此操作的时间可能是更长超时的一部分。”其中有一个内部异常,该异常表示:“无法完成该操作,因为管道已关闭。这可能是由于管道另一端的应用程序退出造成的


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

我在一个单独的PubSub库中重构了所有代码,因此我有一个通用框架来处理pub/sub重构后,错误不再显示


在重构之前,我注意到只有在附加了调试器时才会出现异常。

发布一小段代码,以便我们仔细阅读。尝试显示相同的代码片段、服务契约、服务行为等。可能存在一些并发问题,并且您的服务可能会与客户端死锁=>timeout。您都明白了吗?我遇到了同样的问题,超时只在调试期间发生。