我想弄清楚为什么我们的遗留应用程序之一每天都会抛出异常。它是一个VB.Net Windows服务,它使用Microsoft.VisualBasic.Logging.FileLogTraceListener
类来进行日志记录。
然而,它会抛出以下异常,但我无法解决导致它的原因:
System.IO.IOException: The handle is invalid.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.get_Length()
at Microsoft.VisualBasic.Logging.FileLogTraceListener.ReferencedStream.get_FileSize()
at Microsoft.VisualBasic.Logging.FileLogTraceListener.ResourcesAvailable(Int64 newEntrySize)
at Microsoft.VisualBasic.Logging.FileLogTraceListener.WriteLine(String message)
此刻似乎每天抛出一次,问题是我需要确保记录所有内容。在这种情况下,我只能捕获并吞下异常并省略日志。
我试图查看导致此Windows错误消息的原因(ERROR_INVALID_HANDLE - 0x06),但我似乎无法找到任何特定的内容。
任何帮助都是试图诊断,这将是值得赞赏的!
答案 0 :(得分:0)
为了帮助解决问题,请检查以下内容:
Disable Trace UseGlobalLock For Better Tracing Performance
<结构>
< System.Diagnostics程序>
< trace useGlobalLock =“false” />
<来源>
< source name =“MySource”switchValue =“All”>
<听众> ...
排除来自多线程/ AppDomain / Services的日志记录。
使用Perfmon检查是否同时发生了密集的IO操作,例如磁盘正在备份...
确保驱动程序是最新的。
如果上述操作失败并且您想找出根本原因,则需要使用adplus进行内存转储并使用WinDBG和SOS查看根本原因。
如果所有这些都无法缩小问题范围replace the Servers disk drives。