我有一个 .Net/c# 2.0 windows 服务。入口点包含在一个 try catch 块中,该块通知我出现问题并允许服务继续正常运行,但是当我查看服务器的应用程序事件日志时,我看到许多导致服务终止的“EventType clr20r3”错误不料。catch 块有一个“catch (Exception ex)”并且不会重新抛出异常。
每个 sql 命令的类型都是“CommandType.StoredProcedure”,并使用 SqlDataReader 执行。这些 sproc 调用在 99% 的时间内都能正常运行,并且都经过了彻底的单元测试、分析和 QA。我另外将这些调用包装在 try catch 块中以确保并且仍然遇到这些未处理的异常。
这仅在我们的生产环境中,不能在我们的开发或登台环境中复制(即使在重负载下)。
为什么我的错误处理不能捕捉到这个特定的错误?无论如何,是否可以捕获有关问题根本原因的更多细节?
以下是事件日志的示例:
EventType clr20r3, P1 RDC.OrderProcessorService, P2 1.0.0.0, P3 4ae6a0d0, P4 system.data, P5 2.0.0.0, P6 4889deaf, P7 2490, P8 2c, P9 system.data.sqlclient.sql, P10 NIL.
此外
The Order Processor service terminated unexpectedly. It has done this 1 time(s). The following corrective action will be taken in 60000 milliseconds: Restart the service.