升级到.NET 6出现HTTP Error 500.31无法加载ASP.NET Core运行时是什么原因?
问题排查与修复方案
1 项目配置检查
- 确认解决方案内所有项目(包含WASM客户端、服务端宿主、共享类库)的
.csproj文件中,TargetFramework节点均已修改为net6.0,不存在部分类库仍保留netcoreapp3.1/net5.0配置的情况 - 检查
.csproj文件是否残留<RuntimeFrameworkVersion>、<AspNetCoreHostingModel>等旧版本绑定配置,如有直接删除,让VS自动适配.NET6默认参数即可 - 确认发布生成的
web.config文件中,aspNetCore节点没有硬编码指定旧版本运行时路径
2 隐式依赖排查
- 部分第三方Nuget包即使更新到最新版本,仍可能存在对.NET 3.1运行时的隐式传递依赖,可在项目根目录执行命令
dotnet list package --include-transitive查看所有依赖项的运行时要求 - 如存在传递依赖旧版本运行时的情况,可在服务端宿主项目的
.csproj文件中添加以下配置,强制向前兼容使用.NET 6运行时:
<PropertyGroup> <RollForward>LatestMajor</RollForward> </PropertyGroup>
3 发布部署校验
- 发布前清理解决方案,删除本地所有
bin、obj文件夹后重新构建,避免旧版本编译缓存被带入发布包 - 采用框架依赖模式部署时,确认服务器安装的.NET 6托管捆绑包小版本与本地开发用SDK小版本一致;也可切换为独立部署模式,将运行时一并打包到发布包中,无需依赖服务器安装的运行时环境
- 部署前清空服务器站点目录的所有旧文件,再上传新发布包,避免残留旧版本dll触发运行时加载错误
4 错误溯源
- 开启站点的stdout日志,或查看Windows事件查看器中的ASP.NET Core运行时错误记录,可明确标注缺少的具体运行时版本,确认依赖来源
内容的提问来源于stack exchange,提问作者freddoo
相关产品推荐
相关产品推荐

