- 我有一个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