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

部署后IIS中ASP.NET Core 8 Web API无法启动,是否缺少.NET托管组件?

问题分析与解决方案

结论

是,这个问题的核心原因是生产服务器上缺少非独立部署ASP.NET Core 8 Web API所需的完整运行时及共享框架组件。

原因说明

非独立部署(FDD)的ASP.NET Core应用依赖系统级安装的.NET Runtime和ASP.NET Core Shared Framework。虽然Microsoft .NET 8.0.8 Windows Server Hosting包包含了IIS集成所需的ASP.NET Core模块(ANCM),但它并不一定包含完整的.NET运行时和ASP.NET Core共享框架(尤其是针对特定架构的版本)。

你手动运行dotnet .\<applicationName>.dll能正常工作,说明服务器上的dotnet命令行工具能找到可用的运行时,但IIS通过ANCM加载应用时,因为缺少匹配的共享框架,导致请求无法被正确处理,最终被标记为"已取消"。

解决步骤

  1. 确认应用的目标架构
    打开项目的.csproj文件,查看<PlatformTarget>或<RuntimeIdentifier>节点,确定应用编译的目标架构是x86还是x64。

  2. 安装完整的ASP.NET Core托管包
    直接安装ASP.NET Core 8.0.8 Hosting Bundle——这个包集成了Windows Server Hosting模块、.NET 8.0 Runtime和ASP.NET Core 8.0 Shared Framework,是部署非独立ASP.NET Core应用到IIS的最完整包。

    若需单独安装组件:

    • 先安装对应架构的.NET 8.0.8 Runtime
    • 再安装对应架构的ASP.NET Core 8.0.8 Runtime(包含共享框架)
  3. 验证安装结果
    打开命令提示符,执行以下命令确认组件已正确安装:

    dotnet --list-runtimes
    

    输出中需包含:

    • Microsoft.NETCore.App 8.0.8 [对应架构路径]
    • Microsoft.AspNetCore.App 8.0.8 [对应架构路径]
  4. 重置IIS并调整应用池设置

    • 执行命令重启IIS,确保ANCM加载新安装的组件:
      iisreset
      
    • 检查应用池设置:
      • 将**.NET CLR版本**设为无托管代码(ASP.NET Core应用无需IIS托管代码)
      • 将启用32位应用程序选项与应用目标架构匹配:x64应用设为False,x86应用设为True
  5. 测试访问
    重启目标网站后,再次通过客户端访问API,查看IIS日志和HTTPErr日志是否恢复正常。

内容的提问来源于stack exchange,提问作者DerHaifisch

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 14:37:02