0

由于我已将代码迁移到 .net 4.5,因此当我尝试使用 eventID > 65535 编写 eventLog 时出现错误

这是我的代码,其中 iID > 65535:

 System.Diagnostics.EventLog appLog = new System.Diagnostics.EventLog();
 appLog.Source = "my source";
 appLog.WriteEntry(sMsg, EventLogEntryType.Error, iID);

根据定义,eventID 是一个 int32,所以我不明白为什么会出现错误。

这里是堆栈跟踪:

   at System.Diagnostics.EventLogInternal.WriteEntry(String message, EventLogEntryType type, Int32 eventID, Int16 category, Byte[] rawData)
   at System.Diagnostics.EventLog.WriteEntry(String message, EventLogEntryType type, Int32 eventID)
   at WSeProcFilesHandler.EventLog_AddEntry(String sMsg, Int32 iID) in d:\Liox\TFS\Eprocurement\Main\Dev\Eprocurement\Services\WAeProcFilesHandler\WSeProcFilesHandler.cs:line 567

欢迎任何帮助。谢谢

4

1 回答 1

1

嗯,这在msdn中有说明

参数异常

  • 或 - eventID 小于零或大于 UInt16.MaxValue。

没有解释为什么 Int32 参数仅限于 UInt16,说实话......

管理此问题的一种方法是使用事件日志类别(请参阅此重载)。因此,每个类别可能有 65536 个 id。

顺便说一句,这是很多不同的事件日志 ID,不是吗?

于 2014-01-08T13:15:02.313 回答