簡體   English   中英

升級到 3.1 后,ASP.NET Core 未綁定正文中的參數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM