IIS事件ID 5:ASP缓存初始化失败解决指南
📌 问题现象
在 Windows Server(如 2012/2016/2019 等)搭配 IIS 以及 主机管理系统等环境时,系统事件查看器的“应用程序”日志中频繁出现 事件ID5 的警告或错误:
错误: 针对应用程序池 “aspxxxx” 的模板永久性缓存初始化失败,这是由于以下错误导致的:无法为应用程序池创建磁盘缓存子目录。数据可能包含其他错误代码。
来源: Active Server Pages
记录时间: 每天定时或频繁触发
核心特征:尽管系统日志不断报错,但前端网站及 ASP 业务访问完全正常,不受影响。
🔍 根本原因分析
-
为什么报错?
IIS 的 ASP 引擎为了提升网站解析速度,会将预编译的模板和脚本缓存写入磁盘。默认缓存路径为C:\inetpub\temp\ASP Compiled Templates。当 IIS 工作进程(w3wp.exe)尝试在此目录下为特定应用程序池创建子目录时,由于目录不存在或缺乏 NTFS 写入权限,导致初始化失败。 -
为什么没影响站点访问?
这是 ASP 引擎的一种“降级保护”机制。磁盘缓存失败后,ASP 引擎会自动切换到内存缓存或实时编译模式。由于 Kangle 等前端代理依然正常工作,且脚本执行未受阻断,因此用户端访问无感知,但这会增加服务器 CPU 消耗并降低页面响应速度。
🛠️ 终极解决步骤
请以管理员身份运行命令提示符(CMD),严格按照以下顺序执行:
第一步:重建缓存目录
检查 C:\inetpub\temp\ 下是否丢失了 ASP Compiled Templates 文件夹。使用以下命令强制创建:
mkdir "%SystemDrive%\inetpub\temp\ASP Compiled Templates"
第二步:赋予正确的 NTFS 权限(核心)
IIS 需要特定的账户权限才能写入缓存。注意:以下两条命令必须分别在同一行内完整复制执行,切勿在中间回车换行,否则会报“无效参数”或“目录名称无效”错误。
icacls "%SystemDrive%\inetpub\temp\ASP Compiled Templates" /grant "IIS_IUSRS:(OI)(CI)(M)" /T
icacls "%SystemDrive%\inetpub\temp\ASP Compiled Templates" /grant "NT AUTHORITY\NETWORK SERVICE:(OI)(CI)(M)" /T
注:执行成功后应回显“已成功处理 1 个文件;处理 0 个文件时失败”。如果提示“0 个文件”,说明第一步的路径没建好。
第三步:重启 IIS 服务
使权限修改立即生效,并触发 IIS 重新初始化缓存:
iisreset
定期手动清理缓存文件(安全做法):如果 C:\inetpub\temp 占用空间过大,不要直接右键删除文件夹。请使用命令行安全清理:
iisreset /stop del /s /q /f "C:\inetpub\temp\*.*" iisreset /start
已经是第一篇啦!