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

.NET Core 3.1中如何解决“无法加载类型'Microsoft.AspNetCore.Mvc.MvcJsonOptions'”错误?

解决.NET Core 3.1中无法加载Microsoft.AspNetCore.Mvc.MvcJsonOptions的问题

嘿,这个问题我熟——本质是ASP.NET Core 3.0及以后的版本彻底移除了MvcJsonOptions这个类型,同时JSON格式化的实现方式也做了调整。结合你的csproj代码,咱们一步步修正:

第一步:修复项目依赖包的兼容性

你的项目里有几个和.NET Core 3.1不匹配的包,先调整它们:

  • 删掉Microsoft.AspNetCore.Cors 2.2.0:.NET Core 3.1的Microsoft.AspNetCore.App框架已经内置了CORS功能,旧版本的独立包会和框架引用冲突。
  • 升级Swashbuckle相关包:你用的SwashBuckle.AspNetCore.SwaggerUI 5.0.0虽然能跑,但换成兼容3.1的稳定版本(比如5.6.3)会更稳妥,同时建议补充SwashBuckle.AspNetCore.Swagger包保证Swagger功能完整。

修改后的csproj代码应该是这样:

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <RootNamespace>Insurance_Customer_Portal_API</RootNamespace>
    <AddRazorSupportForMvc>true</AddRazorSupportForMvc>
  </PropertyGroup>
  <ItemGroup>
    <FrameworkReference Include="Microsoft.AspNetCore.App" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc.Versioning.ApiExplorer" Version="4.1.1" />
    <!-- 换成兼容.NET Core 3.1的Swashbuckle稳定版本 -->
    <PackageReference Include="SwashBuckle.AspNetCore.Swagger" Version="5.6.3" />
    <PackageReference Include="SwashBuckle.AspNetCore.SwaggerUI" Version="5.6.3" />
  </ItemGroup>
</Project>

第二步:替换代码里的MvcJsonOptions为JsonOptions

假设你在Startup.cs里有配置JSON序列化的代码(比如旧的AddMvc().AddJsonOptions),原来的MvcJsonOptions已经被JsonOptions取代,而且配置项也换成了System.Text.Json的API(如果要继续用Newtonsoft.Json,后面会提)。

用默认System.Text.Json的配置方式

旧代码(会报错):

services.AddMvc()
    .AddJsonOptions(options =>
    {
        options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
    });

改成.NET Core 3.1的正确写法:

services.AddControllersWithViews() // 或者用AddMvc(),看你项目是API还是MVC
    .AddJsonOptions(options =>
    {
        // 对应原来的驼峰命名配置
        options.JsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase;
    });

如果要继续用Newtonsoft.Json(比如依赖旧的序列化逻辑)

如果你的项目之前用的是Newtonsoft.Json,不想换System.Text.Json,可以引用Microsoft.AspNetCore.Mvc.NewtonsoftJson包,然后这样配置:

services.AddControllersWithViews()
    .AddNewtonsoftJson(options =>
    {
        // 这里就可以用原来的SerializerSettings配置了
        options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
    });

第三步:清理重建项目

最后别忘做这几步,确保依赖完全更新:

  • 删掉项目根目录下的bin和obj文件夹
  • 打开终端运行dotnet restore恢复依赖
  • 重新编译运行项目

这样就能解决那个类型加载错误啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 21:27:45