IIS Server 10.0自动创建额外应用程序池问题及.NET Core应用池选型问询
解决方案
避免额外应用池生成的方法
- 调整其他ASP.NET 4.0应用的InstallShield项目配置:在IIS设置模块中,关闭「全局注册ASP.NET 4.0」选项,仅针对当前安装的目标站点/应用池执行ASP.NET注册,避免
aspnet_regiis.exe遍历所有现有应用池生成副本。如果是已打包完成无法修改的安装包,安装时选择自定义安装模式,取消全局ASP.NET注册的勾选,仅为目标站点注册即可。 - 若无法修改其他应用的安装包,可在安装其他应用前临时修改.NET Core应用池的
.NET CLR版本为v4.0.30319,待其他应用安装完成后再改回无托管代码(No Managed Code),即可跳过aspnet_regiis.exe的复制逻辑。 - 服务器完全可控的场景下,可通过修改IIS全局配置禁用自动复制逻辑:打开
C:\Windows\System32\inetsrv\config\applicationHost.config,在<system.web>配置节下添加<applicationPool aspnet_regiis_copyapppool="false" />,永久拦截aspnet_regiis.exe的自动复制行为。
.NET Core WebAPI应用池配置说明
*.NET Core(含.NET 5及后续版本)的Web应用在IIS上托管时,标准官方配置就是使用「无托管代码(No Managed Code)」类型的应用池。
因为.NET Core的运行时完全独立于.NET Framework,IIS仅需要通过ASP.NET Core Module(ANCM)将请求转发到.NET Core自宿主进程即可,不需要加载.NET Framework的运行时,该配置性能最优、冲突风险最低。
你将应用池改为「ASP.NET v4.0」仍可运行的原因是ANCM会忽略IIS加载的.NET Framework运行时,依然将请求转发到.NET Core运行时处理,但该配置属于非标准的临时规避方案,存在额外内存占用、.NET Framework全局配置干扰请求处理的潜在风险,不建议长期使用。
内容的提问来源于stack exchange,提问作者KiddoDeveloper
相关产品推荐
相关产品推荐

