部署在IIS的.NET 6应用报ANCM进程内处理程序加载失败求助
.NET 6 IIS部署报错:HTTP Error 500.0 - ANCM进程内处理程序加载失败
错误信息
HTTP Error 500.0 - ANCM In-Process Handler Load Failure
常见触发原因
- 未找到指定版本的
Microsoft.NetCore.App或Microsoft.AspNetCore.App - 应用未引用进程内请求处理程序
Microsoft.AspNetCore.Server.IIS - ANCM无法定位dotnet可执行文件
基础排查步骤
- 查看系统事件日志中的详细错误信息
- 启用应用进程的stdout消息日志记录
- 将调试器附加到应用进程进行实时检查
用户已安装对应版本的.NET SDK和Runtime(见下图),但报错仍未解决:
已安装的.NET SDK与Runtime列表
针对性排查与修复方案
确认部署模式与Runtime匹配
- 检查项目文件(
.csproj)中的托管模式配置,确保设置为进程内:<PropertyGroup> <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel> </PropertyGroup> - 发布应用时选择的Runtime架构(x86/x64)需与服务器安装的版本完全一致。
- 检查项目文件(
验证
Microsoft.AspNetCore.Server.IIS依赖- 检查项目NuGet依赖中是否包含
Microsoft.AspNetCore.Server.IIS,若缺失则执行安装:Install-Package Microsoft.AspNetCore.Server.IIS - 发布时确保该包被包含在输出目录内。
- 检查项目NuGet依赖中是否包含
修正IIS应用程序池配置
- 打开IIS管理器,找到目标站点对应的应用程序池,将“.NET CLR版本”设置为
无托管代码(.NET Core应用无需依赖IIS托管CLR)。
- 打开IIS管理器,找到目标站点对应的应用程序池,将“.NET CLR版本”设置为
检查ASP.NET Core模块(ANCM)安装
- 确认服务器已安装对应.NET 6版本的Windows Hosting Bundle(包含ANCM组件),可通过“程序和功能”列表查看。若未安装,重新下载安装对应版本的Hosting Bundle。
启用详细日志定位根因
- 修改应用根目录下的
web.config,启用stdout日志:<aspNetCore processPath="dotnet" arguments=".\YourApp.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" hostingModel="InProcess" /> - 确保
logs目录存在且应用程序池拥有写入权限,通过生成的日志文件获取具体错误细节。
- 修改应用根目录下的
内容的提问来源于stack exchange,提问作者Rakesh Dhamejani
相关产品推荐
相关产品推荐

