FileLogTraceListener使用System.IO.Exceptions

时间:2013-03-22 09:54:31

标签: .net windows

我想弄清楚为什么我们的遗留应用程序之一每天都会抛出异常。它是一个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),但我似乎无法找到任何特定的内容。

任何帮助都是试图诊断,这将是值得赞赏的!

1 个答案:

答案 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