已安装托管包仍遇HTTP Error 500.31:ASP.NET Core运行时加载失败
解决ASP.NET Core 7迁移后生产环境HTTP Error 500.31的问题
1. 核对应用的目标框架与依赖版本
- 打开项目的
.csproj文件,确认<TargetFramework>字段设置为net7.0,无版本误写情况。 - 查看发布目录下的
{项目名}.runtimeconfig.json文件,定位Microsoft.AspNetCore.App的指定版本号,示例如下:"Microsoft.AspNetCore.App": { "version": "7.0.10" }
2. 修复.NET 7 Hosting Bundle安装
- 卸载服务器上现有.NET 7 Hosting Bundle,重新下载最新版安装包并执行安装,选择「修复」选项。
- 安装完成后,执行命令
iisreset重启IIS,确保ASP.NET Core Module V2正常加载。
3. 检查IIS站点的ASP.NET Core配置
- 打开IIS管理器,进入目标站点的「配置编辑器」,定位到
system.webServer/aspNetCore节点:- 确认
processPath设置为dotnet(或完整路径C:\Program Files\dotnet\dotnet.exe),arguments指向你的API程序集(如.\YourApi.dll)。 - 将
stdoutLogEnabled设为true,指定stdoutLogFile路径(如.\logs\stdout),重启站点后查看日志文件,获取更精准的错误细节。
- 确认
4. 匹配服务器运行时版本
- 在服务器执行命令
dotnet --list-runtimes,查看输出中Microsoft.AspNetCore.App的版本,确保与runtimeconfig.json中的版本完全一致。 - 若版本不匹配,可选择以下任一方案:
- 安装对应版本的ASP.NET Core Runtime;
- 在
.csproj中添加<RollForward>LatestMinor</RollForward>,允许使用同主版本的最新次版本运行时; - 修改
<RuntimeFrameworkVersion>指定服务器已安装的精确版本。
5. 确认应用发布模式
- 若使用自包含部署,发布时需勾选「包含运行时」,生成的发布包会自带所有必要的.NET运行时文件,无需依赖服务器全局安装的版本。
- 若使用框架依赖部署,必须保证服务器上存在匹配的运行时环境。
内容的提问来源于stack exchange,提问作者IntelligentCancer
相关产品推荐
相关产品推荐

