2011-11-06 23 views
2

當然,我們必須避免捕獲並嘗試處理AccessViolationExceptions(AVE)。但是,在我目前的情況下,異常是從COM +託管組件拋出的,該組件終止拋出異常的進程,因此正確清理。但是,使用所述COM +組件的託管WCF的Windows服務收到冒泡的AVE,導致服務崩潰。如何讓IErrorHandlers處理WCF中的AccessViolationExceptions?

IErrorHandlers就位似乎不會觸發/檢測AVE。

有沒有什麼辦法讓WCF IErrorHandlers抓住AVEs?

回答

0

IErrorHandlers不可能捕獲類似於AccessViolationExceptions(SEHExceptions)的異常。

1

作爲一個變體,你可以嘗試添加上 AppDomain.CurrentDomain.UnhandledException處理程序,您可以再次重新啓動服務。

或者,您可以運行在一個(「主」)的AppDomain你的主要win_service而在另一個(「子」)的AppDomain主辦的WCF服務。通過這種方式,您可以在不影響主進程的情況下卸載(重新加載)子進程。

+0

請參閱我的主要擔憂是其他正在進行的wcf調用基本上由於不同服務上的EAV而異常終止。使用這兩種方法,我需要強制終止運行我的WCF服務的應用程序域。這是我想要避免的。 我已經在第一次失敗時重新啓動服務。 – Newbie