.NET 6是否支持在单个应用程序池中运行多个应用
.NET 6 单应用程序池多应用部署支持说明
核心结论
不支持。.NET 6 延续了此前 .NET Core 系列版本的部署约束,无法在单个 IIS 应用程序池中同时运行多个独立的 .NET 6 应用。
具体说明
- 两种IIS托管模式都不支持共享应用池:
- 进程内(InProcess)托管模式下,.NET 6 应用直接运行在 IIS 的
w3wp.exe工作进程中,单个工作进程无法同时加载多个独立的 .NET 6 运行时上下文,必然出现程序集加载冲突、静态状态互相污染、配置覆盖等不可预期的问题。 - 进程外(OutOfProcess)托管模式下,IIS 仅作为反向代理将请求转发到独立运行的 .NET 6
dotnet.exe进程,共享应用池时IIS的进程生命周期管理、站点绑定配置逻辑会和多应用的独立进程启动逻辑冲突,直接导致应用启动失败。
- 进程内(InProcess)托管模式下,.NET 6 应用直接运行在 IIS 的
- 强行将多个 .NET 6 应用部署到同一个应用池,最常见的表现是应用启动直接返回503服务不可用错误,即使偶然启动成功,后续运行过程中也会出现大量无规律的异常,完全不具备生产可用性。
你没有检索到针对.NET 6的明确说明很正常:这个约束从.NET Core 1.0版本就已经存在,属于IIS部署的前置基础要求,不会在每个新版本的特性公告里重复提及,后续的.NET 7、.NET 8等版本也同样沿用这个部署规则,和.NET Framework时代单应用池可承载多应用的模式有本质区别。
内容的提问来源于stack exchange,提问作者David Mays
相关产品推荐
相关产品推荐

