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

IIS中默认网站重启时如何向事件查看器写入日志?

解决方案总览

你要的效果有两种可行实现路径,分别对应IIS配置和ASP.NET代码实现两种场景:

方案1:通过IIS自带配置实现(无需修改应用代码)

IIS本身默认就会记录站点、应用池的重启/回收事件到Windows事件查看器,也支持开启更详细的操作审核:

  • 默认生成的重启日志路径:事件查看器 > Windows日志 > 系统,事件来源为WAS(Windows进程激活服务)或IIS-IISManager,会记录操作时间、操作对象等基础信息
  • 如需捕获通过IIS管理器触发的手动操作事件,可开启IIS审核功能:
    1. 打开IIS管理器,点击根节点(你的服务器名称),找到「管理」分类下的「审核」选项
    2. 启用审核功能,勾选「站点启动/停止」「应用池回收/重启」相关的事件类别
    3. 配置完成后,所有通过IIS管理器触发的重启操作都会自动写入事件查看器,包含操作人、操作详情等完整信息

方案2:通过ASP.NET应用层实现(支持自定义日志内容)

如果需要写入自定义的业务相关信息,可以利用ASP.NET的应用生命周期事件实现:

  • 对于ASP.NET Framework:在Global.asax文件的Application_End事件中添加写事件日志的代码即可,这个事件会在应用池重启、站点关停时自动触发
    示例代码片段:
    protected void Application_End(object sender, EventArgs e)
    {
        string logSource = "你的自定义应用标识";
        string logMessage = $"应用于 {DateTime.Now:yyyy-MM-dd HH:mm:ss} 触发重启,操作来源:IIS管理器";
        
        // 提前手动创建事件源可避免权限问题
        if (!EventLog.SourceExists(logSource))
        {
            EventLog.CreateEventSource(logSource, "Application");
        }
        EventLog.WriteEntry(logSource, logMessage, EventLogEntryType.Information, 1001);
    }
    
  • 对于ASP.NET Core:在Program.cs中注册IHostApplicationLifetime,监听ApplicationStopping事件即可实现相同效果
  • 注意:需要给应用池对应的运行身份授予事件日志写入权限,避免权限不足导致写入失败

选型建议

如果仅需要记录重启操作的基础信息,优先选择IIS自带配置方案,无需改动代码稳定性更高;如果需要添加自定义业务字段、上下文信息,再选择ASP.NET代码实现方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 02:18:03