求助:解决.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>
问题根源
- 内部类型不再公开:.NET 6中
Microsoft.AspNetCore.Http.Internal.FormFile属于框架内部实现,已被标记为非公开类型,禁止外部直接引用。 - 版本冲突:项目同时依赖.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
相关产品推荐
相关产品推荐

