2010-09-04 77 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