2012-09-05 202 views
0

我們使用一些正在使用Microsoft.EnterpriseLibrary.Logging 作爲服務運行的第三方軟件。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()

返回null

誰能幫助我爲什麼會這樣?

+0

你知道使用哪個版本的企業庫嗎? – user957902

+0

這種異常是否發生在後臺線程上? – Steven

+0

Steven,是的這個服務運行多個線程。 – bodziec

回答

0

這個問題似乎也是以前版本中的E-Lib的一個已知錯誤。

稱爲:使用來自多個線程的日誌AB時未處理的異常。

「根本的問題是,在.NET 2.0 RTM中,如果在創建子級時存在這樣的堆棧,父級線程的操作堆棧將與子級共享。」

更多在這裏閱讀:http://entlib.codeplex.com/workitem/9592

很難提出一個通用的解決方案,這是它非常依賴於你的應用程序的體系結構。