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

.NET Core 8网站发布后事件日志源未创建,日志功能失效求助

问题原因

你遇到的问题确实是权限不足导致的。创建事件日志源时,系统需要读取所有事件日志(包括Security、State)来验证源名称是否唯一,但当前Web应用的运行账户没有这些日志的读取权限,所以创建源失败,进而无法记录日志。

解决方法

方法1:手动创建事件源(最稳妥)

  1. 打开「事件查看器」,右键点击「应用程序」日志 → 选择「属性」
  2. 切换到「常规」标签页,点击「编辑权限」
  3. 在权限窗口中,给Web应用的运行账户(比如IIS应用池账户、Network Service)添加「读取」权限
  4. 以管理员身份打开命令提示符,执行命令创建源:
    eventcreate /ID 1 /L APPLICATION /T INFORMATION /SO "你的应用源名称" /D "事件源创建完成"
    
    或者用PowerShell(管理员):
    New-EventLog -LogName Application -Source "你的应用源名称"
    
  5. 回到事件查看器刷新「应用程序」日志,确认源已存在

方法2:调整应用账户的权限

如果需要让应用自动创建源(不推荐,权限过大),可以给运行账户添加对应权限:

  1. 打开「本地安全策略」(运行secpol.msc)
  2. 展开「本地策略」→「用户权限分配」
  3. 找到「管理审核和安全日志」,添加Web应用的运行账户
  4. 找到「读取事件日志」,同样添加该账户
  5. 重启IIS服务和应用池

方法3:部署时用代码创建源(自动部署场景)

如果是自动化部署,可以在首次启动时用管理员权限执行以下代码创建源(仅需执行一次):

using System.Diagnostics;

if (!EventLog.SourceExists("你的应用源名称"))
{
    EventLog.CreateEventSource("你的应用源名称", "Application");
}

注意:这段代码必须以管理员身份运行,后续应用正常运行时无需再执行,避免重复报错。

注意事项
  • 确保Logger配置中的源名称和你创建的完全一致,大小写敏感
  • 尽量避免用低权限账户自动创建源,手动创建是更安全的方式
  • 远程服务器部署时,所有操作都要在目标服务器上执行

内容的提问来源于stack exchange,提问作者jstuardo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 21:52:27