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

求助:解决.NET 6中无法加载FormFile类型的System.TypeLoadException错误

解决.NET 6项目中System.TypeLoadException: 无法加载'Microsoft.AspNetCore.Http.Internal.FormFile'的问题

问题详情

运行.NET 6项目时触发如下错误:

System.TypeLoadException: 'Could not load type 'Microsoft.AspNetCore.Http.Internal.FormFile' from assembly 'Microsoft.AspNetCore.Http, Version=6.0.0.0

项目依赖配置如下:

<PropertyGroup>
    <TargetFramework>net6.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Autofac" Version="6.4.0" />
    <PackageReference Include="Autofac.Extensions.DependencyInjection" Version="8.0.0" />
    <PackageReference Include="Autofac.Extras.CommonServiceLocator" Version="6.0.1" />
    <PackageReference Include="AutoMapper" Version="12.0.0" />
    <PackageReference Include="FluentValidation" Version="11.4.0" />
    <PackageReference Include="MediatR" Version="8.0.0" />
    <PackageReference Include="Microsoft.AspNetCore.Http" Version="2.2.0" />
    <PackageReference Include="Microsoft.AspNetCore.Http.Features" Version="2.2.0" />
    <PackageReference Include="RestSharp" Version="108.0.3" />
    <PackageReference Include="Serilog" Version="2.12.0" />
  </ItemGroup>

问题根源

  1. 内部类型不再公开:.NET 6中Microsoft.AspNetCore.Http.Internal.FormFile属于框架内部实现,已被标记为非公开类型,禁止外部直接引用。
  2. 版本冲突:项目同时依赖.NET 6框架和2.2.0版本的Microsoft.AspNetCore.Http系列包,不同版本的组件导致类型加载逻辑混乱,即使更换这两个包的版本也无法解决根本冲突。

解决步骤

1. 移除多余的NuGet包引用

打开项目文件(.csproj),删除以下两行手动添加的包引用:

<PackageReference Include="Microsoft.AspNetCore.Http" Version="2.2.0" />
<PackageReference Include="Microsoft.AspNetCore.Http.Features" Version="2.2.0" />

.NET 6 SDK已内置这些核心组件,无需手动安装低版本NuGet包,避免版本冲突。

2. 替换内部类型为公开接口

将代码中所有直接使用Microsoft.AspNetCore.Http.Internal.FormFile的地方,替换为公开的IFormFile接口:

原错误代码示例:

using Microsoft.AspNetCore.Http.Internal;

public void UploadFile(FormFile file)
{
    // 处理文件逻辑
}

修改后代码:

using Microsoft.AspNetCore.Http;

public void UploadFile(IFormFile file)
{
    // 处理文件逻辑
}

IFormFile是框架提供的公开抽象接口,会由运行时自动注入正确的实现,彻底避免依赖内部类型。

3. 清理并重建项目

执行以下命令确保依赖完全更新:

dotnet clean
dotnet restore
dotnet build

完成后重新运行项目即可解决该类型加载错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 06:10:30