.NET Core 2.0迁移3.1时MvcJsonOptions类型加载失败如何解决
错误原因
ASP.NET Core 3.0+ 已将Newtonsoft.Json相关的序列化组件、Microsoft.AspNetCore.Mvc.MvcJsonOptions类型从核心框架中移除,改为独立分发的NuGet包,未安装对应包时就会抛出该类型加载错误。
解决方法
- 安装匹配.NET Core 3.1版本的NuGet包
Microsoft.AspNetCore.Mvc.NewtonsoftJson,选择3.1.x的稳定版本即可。 - 无需修改你现有服务注册代码,安装完成后清理解决方案的bin、obj缓存文件夹,重新编译运行即可解决问题。
- 如果调整后仍然报错,可以在注册NewtonsoftJson之前先显式注册Mvc核心服务,调整后的代码如下:
services.AddControllersWithViews() .AddAuthorization() .AddApiExplorer() .AddMvcOptions(option => option.EnableEndpointRouting = false) .AddNewtonsoftJson(n => { n.SerializerSettings.Converters.Add(new StringEnumConverter()); n.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); n.SerializerSettings.NullValueHandling = NullValueHandling.Ignore; }) .AddDataAnnotations();
注意事项
如果项目中原有单独引用的Microsoft.AspNetCore.Mvc.Formatters.Json包,请直接移除,该包的功能已经完全整合到Microsoft.AspNetCore.Mvc.NewtonsoftJson中,重复引用会导致类型冲突。
内容的提问来源于stack exchange,提问作者Chinnadurai
相关产品推荐
相关产品推荐

