- 我有一個ASP.NET MVC 5應用
- 該應用程序使用日誌記錄應用程序塊和異常應用程序塊
- 在生產環境中,我發現多次出現以下錯誤信息發生:
Cannot access a disposed object. Object name: 'Microsoft.Practices.EnterpriseLibrary.Logging.LogWriter'. at Microsoft.Practices.EnterpriseLibrary.Logging.LogWriter.ExecuteReadOperation(Action readOperation) at Microsoft.Practices.EnterpriseLibrary.Logging.LogWriter.Write(LogEntry log) at Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Logging.LoggingExceptionHandler.WriteToLog(String logMessage, IDictionary exceptionData) at Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Logging.LoggingExceptionHandler.HandleException(Exception exception, Guid handlingInstanceId) at Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.ExceptionPolicyEntry.ExecuteHandlerChain(Exception ex, Guid handlingInstanceID)EnterpriseLibrary 6錯誤:無法訪問已釋放的對象(對象名稱:「Microsoft.Practices.EnterpriseLibrary.Logging.LogWriter」)
的錯誤似乎當存在失敗的SE異步請求發生rver。當服務器試圖處理這個錯誤時,ExceptionHandling應用程序塊失敗。
我的問題當然是,我不明白這個錯誤的原因,但最讓我發現的是我無法複製錯誤的事實。
我已經嘗試重新初始化AppDomain(通過web.config),回收應用程序池,在發送ajax請求之前重新啓動IIS服務器。我還創建了LogWriterWrapper單例來設置LogWriter實例,但行爲是相同的。不時,嘗試處理異常時的錯誤仍然會發生。
我不知道它是否可能是相關的,但似乎只有當客戶端是ie8/ie9時纔會出現此錯誤。它從來沒有發生過,例如當使用鉻時,但我想這可能只是偶然發生......
看來,如果我實例化LogWriter一次,然後實例化ExceptionManager(它使用已存在的LogWriter實例),然後再次實例化LogWriter,會發生這種情況。在此之後,下一次使用ExceptionPolicy.HandleException。我有這個錯誤可能是因爲ExceptionManager仍然掛鉤到LogWriter的一個不存在的實例 – Dragos