0

我们使用一些使用 Microsoft.EnterpriseLibrary.Logging 作为服务运行的第三方软件。

最近该服务停止了很多次。我们只有来自 Windows 事件日志的数据。Stacktrace 显示 MS EntLib 日志记录引发了 ArgumentNullException。

Event Type: Error Event Source: .NET Runtime Event Category: None Event ID: 1026 Date: 04/09/2012 Time: 19:05:23 User: N/A Computer: XXX Description: Application: XXX.Service.exe Framework Version: v4.0.30319 Description: The process was terminated due to an unhandled exception. Exception Info: System.ArgumentNullException Stack: at Microsoft.Practices.EnterpriseLibrary.Logging.LogEntry.BuildCategoriesCollection(System.String) at Microsoft.Practices.EnterpriseLibrary.Logging.Tracer.WriteTraceMessage(System.String, System.String, System.Diagnostics.TraceEventType) at Microsoft.Practices.EnterpriseLibrary.Logging.Tracer.WriteTraceEndMessage(System.String) at Microsoft.Practices.EnterpriseLibrary.Logging.Tracer.Dispose(Boolean) at Microsoft.Practices.EnterpriseLibrary.Logging.Tracer.Dispose() at XXX

我已经检查过了,看起来它是由以下原因引起的:

Trace.CorrelationManager.LogicalOperationStack.Peek()

返回空

谁能帮助我为什么会这样?

4

1 回答 1

0

在以前的版本中,这个问题似乎也是 E-Lib 的一个已知错误。

称为:从多个线程使用日志记录 AB 时出现未处理的异常。

“根本问题是,在 .NET 2.0 RTM 中,如果创建子线程时存在这样的堆栈,则父线程的操作堆栈与其子线程共享。”

在这里阅读更多:http: //entlib.codeplex.com/workitem/9592

很难为此提出通用解决方案,因为它在很大程度上取决于您的应用程序的架构。

于 2013-10-05T23:05:26.383 回答