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

Linux运行.NET 9.0 Web应用时IIS类型加载失败的修复方法

.NET 9 Linux部署:解决Could not load type 'Microsoft.AspNetCore.Server.IIS.IIISEnvironmentFeature'错误

排查与解决步骤

1. 检查项目文件的隐式IIS相关配置

  • 打开失败站点的.csproj文件,确认没有以下强制依赖IIS托管组件的配置(Linux环境无需该配置):
    <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
    
  • 对比正常站点的.csproj,确保<Sdk>节点一致(应为Microsoft.NET.Sdk.Web),无额外的IIS相关SDK或属性配置。

2. 清理构建缓存与重新发布

  • 本地执行以下命令彻底清理并重新发布,避免旧依赖残留:
    dotnet clean
    dotnet restore
    dotnet publish -c Release --no-restore
    
  • 删除Linux部署目录下的旧发布文件,重新上传新生成的publish目录内容。

3. 检查依赖树中的IIS相关包

  • 执行命令查看项目的间接依赖,对比正常站点找出差异:
    dotnet list package --include-transitive
    
  • 如果发现Microsoft.AspNetCore.Server.IIS或Microsoft.AspNetCore.Server.IISIntegration被间接引入,定位对应的依赖包并排除,或更新该包版本与正常站点一致。

4. 确认宿主构建逻辑无IIS相关代码

  • 检查Program.cs,确保没有调用.UseIIS()或.UseIISIntegration()方法(这类方法仅适用于Windows IIS环境)。可显式指定使用Kestrel:
    var builder = WebApplication.CreateBuilder(args);
    builder.WebHost.UseKestrel(); // 显式配置Kestrel,避免隐式依赖IIS组件
    // 后续配置逻辑...
    var app = builder.Build();
    app.Run();
    

5. 检查部署环境的配置文件

  • 确认部署目录下的appsettings.json及环境配置文件中,没有IISOptions等IIS专属配置节点。
  • 检查Linux服务器上的环境变量,确保未设置ASPNETCORE_HOSTINGSTARTUPASSEMBLIES等会加载IIS组件的变量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 21:23:14