c# – 为什么EventRecord.FormatDescription()返回null?

前端之家收集整理的这篇文章主要介绍了c# – 为什么EventRecord.FormatDescription()返回null?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
当使用System.Diagnostics.Eventing.Reader.EventLogQuery从 Windows事件日志中读取事件时,EventRecord.FormatDescription()方法有时返回null.为什么是这样?在事件查看器中有关于返回null的事件的消息.

解决方法

这是由于.NET框架中的一个错误.

基本上你需要做的是解决这个错误是将CurrentCulture设置为“en-US”.

例:

var beforeCulture = Thread.CurrentThread.CurrentCulture;

try
{
  Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");

  using (var session = new EventLogSession(ipOrAddress,userDomain,username,password,SessionAuthentication.Default))
  {
    var query = new EventLogQuery("System",PathType.LogName,queryString)
      {
        ReverseDirection = true,Session = session
      };

    using (var reader = new EventLogReader(query))
    {
      for (var record = reader.ReadEvent(); record != null; record = reader.ReadEvent())
      {
        // Read event records
        string message = record.FormatDescription();
      }
    }
  }
}
finally
{
  Thread.CurrentThread.CurrentCulture = beforeCulture;
}

这种解决方法很难找到,所以我以为我会把它记录在一个由Google索引的地方.我发现它在一个旧的MS Connect case,但已被关闭,状态为“不修复”.

更新:
该bug也已经是reported for .NET 4,状态是“发送给工程团队进行考虑”,并提出注释,指出该错误可能在下一个主要的.NET框架版本(v5)中被修复.

原文链接:https://www.f2er.com/csharp/94397.html

猜你在找的C#相关文章