You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Framework 4.6.2迁移x64后操作日志写入调试日志问题

.NET Framework 4.6.2 x64下EventSource写入Operational事件日志异常问题解决

问题现象

我在.NET Framework 4.6.2中基于EventSource类实现了事件日志写入功能,将应用从x86迁移至x64后,遇到以下行为差异:

  • 写入Admin事件日志全程正常
  • 写入Operational事件日志存在异常:
    • x86版本:无论在Visual Studio中启动还是手动运行,均能正常写入Operational日志
    • x64版本:在Visual Studio中启动正常,但手动运行时,Operational事件会被写入调试日志(仅启用调试日志时可见),且调试日志无有效输出内容

解决方法

通过显式调用EventSource带参数的构造函数,解决了该问题:

原代码

public static EventManager Log = new EventManager();

修改后代码

public static EventManager Log = new EventManager(false);

public EventManager(bool throwOnEventWriteErrors) : base(throwOnEventWriteErrors)
{
}

其中EventManager是自定义的EventSource子类,包含Operational事件定义示例:

[Event(2, Message = "Operational Event", Level = EventLevel.Informational, Channel = EventChannel.Operational)]
public void OperationalEvent() { WriteEvent(2); }

原因推测

虽然无法完全明确底层触发逻辑,但推测是显式传入throwOnEventWriteErrors参数并调用基类构造函数,触发了EventSource内部不同的初始化代码路径,从而绕过了x64环境下手动运行时的底层兼容性问题。

内容的提问来源于stack exchange,提问作者Leo D'Arcy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 19:17:39