You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:如何修复HTTP Error 500.31 - 加载ASP.NET Core运行时失败

解决HTTP Error 500.31 - 加载ASP.NET Core运行时失败问题

问题描述

发布.NET Core 5.0应用至IIS时触发以下错误:

HTTP Error 500.31 - Failed to load ASP.NET Core runtime
常见解决方案:未找到指定版本的Microsoft.NetCore.App或Microsoft.AspNetCore.App。
故障排除步骤:

  • 检查系统事件日志中的错误信息
  • 启用应用进程的stdout消息日志记录
  • 将调试器附加到应用进程并检查

当前web.config配置:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
    </handlers>
        <aspNetCore processPath="dotnet" arguments=".\AppCore.dll" stdoutLogEnabled="false" hostingModel="inprocess" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false"/>
  </system.webServer>
</configuration>

已安装ASP.NET Core Runtime 5.0.17托管包,因需求限制必须使用.NET 5。
.NET环境信息:
dotnet --info

解决方案

1. 验证运行时版本与架构匹配

  • 检查应用项目文件(.csproj)中的目标框架和运行时标识配置,确保与服务器安装的运行时一致:
    <TargetFramework>net5.0</TargetFramework>
    <RuntimeIdentifier>win-x64</RuntimeIdentifier> <!-- 需与服务器操作系统架构一致,如x86/x64 -->
    
  • 打开服务器的控制面板>程序>程序和功能,确认已安装的**ASP.NET Core 5.0 Runtime(托管包)**版本为5.0.17,且架构与应用发布时指定的一致。

2. 启用stdout日志获取详细错误

  • 修改web.config中的stdoutLogEnabled为true,并确保logs目录存在且应用池有权限写入:
    <aspNetCore processPath="dotnet" arguments=".\AppCore.dll" stdoutLogEnabled="true" hostingModel="inprocess" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false"/>
    
  • 重启IIS站点后访问应用,查看logs目录下的日志文件,可获取运行时加载失败的具体原因(如缺失依赖、版本不匹配等)。

3. 检查应用池配置

  • 将应用池的**.NET CLR版本**设置为无托管代码,ASP.NET Core应用无需依赖IIS的托管CLR。
  • 确认应用池身份拥有应用文件目录的读取权限,以及系统.NET运行时文件的访问权限。

4. 重新安装运行时

  • 卸载服务器上已有的ASP.NET Core 5.0.17托管包,下载对应架构的官方安装包重新安装,完成后重启服务器。
  • 运行命令dotnet --list-runtimes,确认输出中包含Microsoft.AspNetCore.App 5.0.17和Microsoft.NETCore.App 5.0.17。

5. 切换托管模式测试

  • 当前配置使用inprocess托管模式,若AspNetCoreModuleV2版本存在兼容问题,可尝试切换为outofprocess模式:
    <aspNetCore processPath="dotnet" arguments=".\AppCore.dll" stdoutLogEnabled="true" hostingModel="outofprocess" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false"/>
    

内容的提问来源于stack exchange,提问作者Siwar Hadj Ali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 18:21:34