我開發了一個用於與數據庫通信的WCF服務。我從我的WPF應用程序中使用此服務來訪問數據庫。將來,我們也計劃擁有一個Web客戶端。目前,我們將服務作爲Windows服務託管在服務器中。WCF服務異常處理
我在這裏的問題是,如果在服務器意味着任何異常,我想通知客戶端的異常。另外,我不希望這個服務被殺死。我如何實現這一目標?
例如:如果數據庫脫機,當服務嘗試訪問該數據庫時,它會引發異常。我沒有使用try catch處理這些異常。這些類型的未處理的異常導致我的WCF服務關閉。
我開發了一個用於與數據庫通信的WCF服務。我從我的WPF應用程序中使用此服務來訪問數據庫。將來,我們也計劃擁有一個Web客戶端。目前,我們將服務作爲Windows服務託管在服務器中。WCF服務異常處理
我在這裏的問題是,如果在服務器意味着任何異常,我想通知客戶端的異常。另外,我不希望這個服務被殺死。我如何實現這一目標?
例如:如果數據庫脫機,當服務嘗試訪問該數據庫時,它會引發異常。我沒有使用try catch處理這些異常。這些類型的未處理的異常導致我的WCF服務關閉。
你可以爲你的WCF服務方法創建一個FaultContract。當服務器發生異常時,可以引發FaultException。客戶端可以捕獲這個FaultException並處理它。
我希望鏈接有幫助。 http://www.codeproject.com/Articles/26320/WCF-Error-Handling-and-Fault-Conversion
你不要有做任何事情。如果發生異常,服務器不會被終止。客戶端將收到異常。
如果需要,可以使用IErrorHandler
接口添加錯誤處理,並且應該使用錯誤合約,以便客戶端知道他們是否得到預期的或意外的錯誤。在這裏看到更多的細節:http://msdn.microsoft.com/en-us/library/gg281715%28v=vs.110%29.aspx
fejesjoco:我將服務作爲Windows服務託管,如果發生異常,服務將停止。 – petchirajan
那麼這不是WCF的錯,而是別的。 WCF捕獲服務中的異常,所以它不可能是原因。 – fejesjoco
fejesjoco:我在使用Try..Catch的服務中處理異常,並從catch塊中拋出FaultException來通知客戶端。謝謝你的幫助。 – petchirajan
你可以發佈一些代碼來展示當你拋出異常時你如何停止你的服務嗎? – MattC