在某些情況下,我的.Net Windows服務可能會生成一個StackOverflowException。不幸的是,這種行爲似乎是服務停止死機,並且不會在事件日誌中寫入任何內容。我甚至沒有收到服務控制管理員發送的表示服務失敗的消息。.Net Windows服務中的StackOverflowException
有沒有辦法在所有Windows服務可以檢測已發生這樣的異常?
在此例外的文檔中,MSDN說:「請注意,承載公共語言運行庫(CLR)的應用程序可以指定CLR卸載發生堆棧溢出異常的應用程序域,並讓相應的進程繼續」。這是我期望的Windows服務實現要做的事情,但事實並非如此。
請不要只是回覆說我應該確保我的代碼永遠不會拋出這樣的異常 - 相信我,我會如果我可以 - 我想要做的是以合理的方式處理最糟糕的情況,使我的服務能夠應對意外的錯誤。
您是否嘗試將調試器附加到服務? :http://msdn.microsoft.com/en-us/library/7a50syb3(VS.80).aspx嘗試找出究竟出了什麼問題? – 2010-11-03 15:26:15
你是否在捕捉錯誤? – 2010-11-03 15:27:16
是的,託尼,我正在盡我所能在CLR – 2010-11-03 15:37:15