我有一个以发布模式运行的Windows服务程序,它运行24/7,这使得某些进程中的COM调用C ++库,偶尔会崩溃但是 AppDomain.CurrentDomain.UnhandledException中的log4net日志调用< / strong>事件不会触发。
相反,该过程只是终止并且写了一条EventLog日志消息......但是再次奇怪的是我的代码没有任何EventLog.WriteEntry调用。
有些人可以帮我解决为什么AppDomain.CurrentDomain.UnhandledException在所有情况下都没有触发?
提前致谢
事件日志消息:
EventType clr20r3,P1 ProgramName.exe,P2 0.0.0.0,P3 4d5bd49f,P4 mscorlib,P5 2.0.0.0,P6 4a7cd8f7,P7 41b3,P8 a3,P9 system.argumentoutofrange,P10 NIL。
答案 0 :(得分:1)
事件日志中的条目由Windows编写,并告诉您某些内容正在抛出ArgumentOutOfRangeException。如果没有看到AppDomain.CurrentDomain.UnhandledException
的事件处理程序中包含的代码,就很难说为什么,但很可能会出现以下情况之一:
ArgumentOutOfRangeException
前者更有可能。非常仔细地查看异常处理程序中的代码,并查找可以传递错误参数的任何地方。您可以尝试将整个异常处理程序包装在try
`catch`中,该异常处理程序将在 异常处理程序中发生的任何异常记录到事件日志中,并查看是否可以获得更多信息,例如作为堆栈跟踪。
此外,请确保在应用程序中部署调试符号(.pdb
文件),以便记录的任何堆栈跟踪都会为您提供行号以供参考。