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

IIS 10应用程序池StartMode自动变为AlwaysRunning问题求助

排查思路与解决方案

优先定位触发变更的进程

你贴的事件日志里已经记录了触发配置修改的进程ID:Execution ProcessID="10120",这是最直接的排查线索。下次再出现配置自动变更时,第一时间打开任务管理器-详细信息面板,对照PID匹配对应的可执行文件,常见的触发进程包括VS发布工具、IIS管理工具、安全软件、域组策略客户端、运维同步脚本等,定位到进程后直接对应调整配置即可。

常见根因与修复方案

  • Visual Studio/Web Deploy 发布自动覆盖配置
    .NET5项目默认的Web Deploy发布流程会同步IIS站点与应用池配置,如果你在发布配置中开启了应用初始化、站点预加载相关选项,每次发布都会自动将对应应用池的startMode改为AlwaysRunning。
    修复方式:打开对应3个项目的Properties/PublishProfiles目录下的发布配置文件(.pubxml后缀),添加配置项<IncludeAppPool>False</IncludeAppPool>,禁止发布流程修改应用池配置;如果不需要预加载功能,直接删除pubxml中所有和applicationInitialization、AlwaysRunning相关的配置节点。

  • IIS Application Initialization 模块自动修正配置
    如果IIS安装了应用程序初始化(Application Initialization)角色服务,只要站点配置了预加载规则,模块会自动将关联应用池的启动模式改为AlwaysRunning,部分组策略、基线检查脚本也会定期执行这个修正逻辑。
    修复方式:

    1. 检查3个问题站点根目录下的web.config,如果存在<system.webServer><applicationInitialization>节点且你不需要预加载功能,直接删除该节点
    2. 打开IIS全局配置文件C:\Windows\System32\inetsrv\config\applicationHost.config,搜索3个问题应用池关联的applicationInitialization配置,删除无效的预加载规则
    3. 如果开发机加入了域,检查是否有域下发的IIS配置基线规则自动修改该参数。
  • IIS共享配置同步
    如果IIS开启了共享配置功能,配置存储路径上的applicationHost.config被其他节点/管理员修改后,会自动同步到本机。直接打开IIS管理器的「共享配置」功能页检查,本地开发环境无多节点同步需求的话直接关闭该功能即可。

临时兜底方案

如果暂时无法定位根因,可以通过定时任务自动修正配置,避免影响日常使用:

  1. 新建PowerShell脚本,内容如下,替换为你自己的应用池名称:
$targetPools = @("AppPoolName1", "AppPoolName2", "AppPoolName3")
Import-Module WebAdministration
foreach ($pool in $targetPools) {
    $poolPath = "IIS:\AppPools\$pool"
    if (Test-Path $poolPath) {
        Set-ItemProperty $poolPath -Name startMode -Value "OnDemand"
    }
}
  1. 将脚本加入系统任务计划程序,设置触发周期为每10-15分钟一次,运行权限配置为本机管理员即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 08:12:22