2

我试图弄清楚为什么我们的一个遗留应用程序每天都会抛出异常。它是一个 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) 的可能原因,但我似乎找不到任何具体的内容。

任何帮助试图诊断这将不胜感激!

4

1 回答 1

0

为了帮助诊断问题,请检查以下内容:

  • 禁用跟踪 UseGlobalLock 以获得更好的跟踪性能

    <配置>
    <system.diagnostics>
    <trace useGlobalLock="false" />
    <sources>
    <source name="MySource" switchValue="All">
    <listeners> ...

  • 从多线程/AppDomain/Services 中排除日志记录。

  • 使用Perfmon检查是否同时发生密集的 IO 操作,例如磁盘正在备份...

  • 确保驱动程序是最新的。

  • 如果上述方法失败并且您想找出根本原因,则需要使用 adplus 进行内存转储并使用带有 SOS 的 WinDBG来查看根本原因。

如果所有这些都无法缩小问题范围,请更换服务器磁盘驱动器

于 2013-03-29T06:20:03.930 回答