![](/img/trans.png)
[英]Error declaring verbatim variables after upgrade to asp.net core 3.1
[英]ASP.NET Core not binding arguments from body after upgrade to 3.1
我剛剛將 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; }
}
序列化過程使用 setter,因此您不能省略它們。
我只想指出,如果修改模型不適合您,那么您可以重新添加 JSON.NET 支持。
只需安裝以下 nuget 包:
Install-Package Microsoft.AspNetCore.Mvc.NewtonsoftJson
然后在您添加 MVC 的 startup.cs 中,執行以下操作:
services.AddMvc().AddNewtonsoftJson();
然后你又回到使用 JSON.NET 了,它是用於 .NET Core 2.X 項目的序列化程序。
https://dotnetcoretutorials.com/2019/12/19/using-newtonsoft-json-in-net-core-3-projects/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.