2011-12-21 147 views
0

我有一個從客戶端調用的WCF服務。當調試期間客戶端和客戶端之間存在數據密集的來回停頓時,某種程度上存在服務異常,服務必須重新加載。在我的情況下,該服務大約需要10分鐘才能加載(加載數據)。我沒有在WCF本身拋出任何異常。我在「try and catch {return null}」(將null返回給客戶端而不是中斷)中封裝了所有服務調用/函數,但該異常仍在客戶端發生並且服務發生故障。異常拋出WCF而不拋出異常

這個錯誤在哪裏發生?這種通信是否會被忽略,WCF服務內部的一些隨機例外。我想要捕獲此異常並且不會對整個服務發生故障(需要等待10分鐘才能重新啓動服務)。是否有任何工具/代碼可以捕獲WCF內部的任何和所有異常,並且不會造成錯誤。網絡連接中斷等一些例外情況不在我們的控制範圍之內。我不拋出任何異常我自己喜歡「新的異常(」有事發生「)爲例說明。)

感謝您的幫助。

+2

什麼是例外?它說什麼?是否有InnerException?需要更多細節。 – Amy 2011-12-21 01:07:34

+0

它是「CommunicationException」。 – iefpw 2011-12-21 01:48:11

+0

{「底層連接已關閉:接收端發生意外錯誤。」} {「無法從傳輸連接讀取數據:現有連接被遠程主機強制關閉。」} {「接收時發生錯誤http://asdf232.com/Service.svc的HTTP響應,這可能是由於服務端點綁定不使用HTTP協議造成的,也可能是由於HTTP請求上下文被服務器中止(可能是由於該服務關閉)。請參閱服務器日誌以獲取更多詳細信息。「} – iefpw 2011-12-21 01:52:06

回答

0

請參閱我的回答here啓用跟蹤,這樣就可以計算出除此之外,我懷疑任何人都可以給你一個堅實的理由,因爲你爲什麼遇到你的WCF服務問題

+0

這在調試過程中發生,它在MSDN communicationexceptionarticle中說。有關故障等的信息 – iefpw 2011-12-21 01:56:58

0

只是一個猜測:你說你的服務加載了很多數據你從服務中返回多少數據?如果你返回一個巨大的列表,這個異常可能是由錯誤的客戶端 - 服務器配置引起的,你應該增加maxReceivedMessageSize和maxBuff erSize;有時也會在服務器和客戶端上增加DataContractSerializer的maxItemsInObjectGraph。

此外,爲了捕獲服務器上的所有異常而不是多個try-catch塊,您可以實現IErrorHandler。