2011-04-26 56 views
0

我基於兩個窗口服務,這是建立在客戶端(.NET 2)機和Windows Server開發C#克倫特/服務器應用程序2003NetworkStream.Read IO.Exception上部署的應用程序

有時我獲得例外

無法從傳輸連接讀取數據。現有連接被遠程主機強制關閉

它不會在一段時間內發生。從服務器上的服務重新啓動開始,有時需要2周甚至1天,直到異常開始發生。

如何解決此問題?

謝謝

+0

幾乎沒有任何信息能夠理解問題,請張貼一些代碼和異常詳細信息 – V4Vendetta 2011-04-26 07:43:48

+0

查看發生異常的代碼並知道發生的連接的哪一端會很有幫助。該異常通常意味着連接的另一端已關閉。這可能有很多原因。 – 2011-04-26 07:45:39

回答

1

聽起來像間歇性網絡問題。這在無線網絡中非常普遍,它也可能會在有線網絡上不時發生(以太網不是確定性協議)。原因可以是各種各樣的。但是,除了解決您的網絡問題外,我強烈建議您提供服務以應對網絡問題。

(想想有人在短時間內拔掉服務器的網線的簡單情況:如果您的應用程序崩潰並出現未處理的異常,則需要管理員干預才能讓其再次運行。 )

因此,您的服務應該捕獲IO異常,進入Windows應用程序日誌並稍後重試操作(以避免氾濫事件日誌或將不必要的負載放在機器或網絡)。

+0

正是我所做的:捕獲異常,將其寫入Windows日誌並稍後重試,但我想了解其原因,因爲一旦發生異常,它會持續發生,直到我重新啓動服務器上的服務器 – alexyz 2011-04-26 07:58:31

+0

@alexyz:我看到!在這種情況下,您可能需要在連接丟失後重新建立連接。你使用什麼類型的連接?在你的問題中顯示一些(簡化)代碼可能會有所幫助。 – Heinzi 2011-04-26 08:12:55

+0

我正在使用Tcp連接 – alexyz 2011-04-26 10:09:01