如何解决升级到3.1后,ASP.NET Core不会从主体绑定参数
我刚刚将ASP.NET Core项目从2.2升级到3.1,现在我的模型绑定不适用于POST记录。我读到默认的JSON序列化程序在.NET Core 3中从Newtonsoft.JSON更改为System.Text.Json。这可能是原因吗?
我的动作和课堂看起来像这样
[HttpPost]
public IActionResult Foo([FromBody]Bar req)
public class Bar
{
public string Fiz;
public int Buzz;
}
解决方法
是的。出现此错误的原因是新的JSON库。
由于某些原因,System.Text.Json
不填充字段,仅填充属性。因此,您需要更改类定义Bar
才能使用属性
public class Bar
{
public string Fiz { get; set; }
public int Buzz { get; set; }
}
序列化过程使用设置器,因此您不能忽略这些设置。
,我只想指出,如果修改模型不是您的选择,那么您可以添加JSON.NET支持。
只需安装以下nuget软件包:
Install-Package Microsoft.AspNetCore.Mvc.NewtonsoftJson
然后在您的startup.cs(添加MVC)中执行:
services.AddMvc().AddNewtonsoftJson();
然后返回到JSON.NET,它是.NET Core 2.X项目使用的序列化程序。
https://dotnetcoretutorials.com/2019/12/19/using-newtonsoft-json-in-net-core-3-projects/
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。