在某些情况下,我的.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