2010-09-06 73 views
2

我有一個簡單的客戶端服務器應用程序,當我啓動服務器並通過客戶端everythings發送消息時使用WCF(netTcpBinding)工作正常,但是當我手動關閉服務器並打開它再次(沒有關閉客戶端應用程序)下次客戶端嘗試發送消息到服務器時,我得到此異常(在客戶端):Socket連接中止 - WCF

套接字連接被中止。這可能是由於我們的消息處理錯誤或遠程主機超出接收超時的錯誤或網絡資源問題。本地套接字超時時間爲'00:00:59.9843903'。

如果我使用basicHttpBinding問題不會發生。

是任何人知道爲什麼會出現此問題? 謝謝, Liran

回答

5

這是預期的行爲。關閉服務器時,服務器上的TCP連接已關閉,您無法再從客戶端調用它。再次啓動服務器將無濟於事。您必須捕獲客戶端上的異常,中止當前代理並創建並打開新代理。

使用BasicHttpBinding它可以工作,因爲NetTcpBinding在代理的整個生命週期中使用單個通道(cannel綁定到TCP連接),而BasicHttpBinding爲每個調用創建一個新的(它重用現有的HTTP連接或創建一個新連接, t存在)。