新建IIS应用池在IIS管理器中不显示却提示已存在的问题
问题描述
使用以下C#代码在本地机器创建IIS应用池,代码运行无报错,但IIS管理器中找不到该应用池;重复创建同名应用池时,系统提示“应用池已存在”。如何创建能在IIS管理器正常显示的应用池?
代码如下:
using Microsoft.Web.Administration; public static void CreateNewAppPool(string newAppPoolName) { try { using (ServerManager serverManager = new ServerManager()) { ApplicationPool newAppPool = serverManager.ApplicationPools.Add(newAppPoolName); newAppPool.ManagedRuntimeVersion = "v4.0"; newAppPool.ManagedPipelineMode = ManagedPipelineMode.Integrated; newAppPool.AutoStart = true; serverManager.CommitChanges(); } } catch (Exception ex) { Console.WriteLine($"Error occured - {ex.Message}"); } }
(附IIS管理器截图:
)
解决方法
1. 调整程序编译位数
核心问题是32位程序与64位IIS的配置文件隔离:
- 32位编译的程序会修改
%windir%\SysWOW64\inetsrv\config\applicationHost.config,而64位IIS管理器读取的是%windir%\System32\inetsrv\config\applicationHost.config,导致两边配置不一致。 - 修复:将项目编译目标改为x64或Any CPU(取消勾选"首选32位"选项),重新运行代码。
2. 验证配置文件位置
手动检查对应路径的配置文件,确认应用池是否存在:
- 32位配置路径:
C:\Windows\SysWOW64\inetsrv\config\applicationHost.config - 64位配置路径:
C:\Windows\System32\inetsrv\config\applicationHost.config
如果在SysWOW64的配置里找到目标应用池,说明就是位数不匹配导致的显示问题。
3. 确保运行权限
代码需要管理员权限才能正确写入IIS配置:
- 右键程序选择"以管理员身份运行",或者在项目的应用程序清单中,将
requestedExecutionLevel设置为requireAdministrator,强制程序以管理员权限启动。
4. 刷新IIS管理器缓存
IIS管理器可能会缓存旧配置,导致新创建的应用池不显示:
- 关闭并重新打开IIS管理器,或者右键服务器节点选择"刷新",即可看到最新的应用池列表。
内容的提问来源于stack exchange,提问作者Gimmacus
相关产品推荐
相关产品推荐

