微信搜索superit|邀请体验:大数据, 数据管理、OLAP分析与可视化平台 | 赞助作者:赞助作者

netcore升级后frombody一直报null,

我的操作 aide_941 2℃ 0评论

一个解决方法添加Apicontrller 不使用Frombody,直接类对象,

一个是添加NewtonsoftJson,字符串和别的类型自动转换

 

删除了对 Newtonsoft.Json 的引用,将任何自动 Json 转换留给 System.Text.Json 处理。 事实证明,这是问题的原因,因为 System.Text.Json 不那么灵活(Microsoft 自己是这样说的,并且打算如此:How to migrate from Newtonsoft.Json to System.Text.Json) .

在 .NET Core 3 之前,ASP.NET Core 内部使用 Newtonsoft.Json,现在改用 System.Text.Json

一个例子是数字字段,例如 MyClass.Value1。 如果您从 Javascript 传递"10"或 10Newtonsoft.Json 将处理它并将两者都识别为 10。默认情况下使用 System.Text.Json,该字段不能包含引号,如果您在 Json 中发布它,您将得到一个空 [FromBody] 值。

解决此问题的最快方法是在这些情况下恢复为 Newtonsoft.Json,这很容易通过以下方式完成:

  • 安装 Nuget 包 Microsoft.AspNetCore.Mvc.NewtonsoftJson
  • 在 Startup.cs 中,更新以下方法:
public void ConfigureServices(IServiceCollection services)
{
    services.AddRazorPages().AddNewtonsoftJson();

    //All your other code:
    //...
}

这是直接从这里获取的。
进行此更改后,一切再次按预期工作。

我知道可以使用自定义解析器配置 System.Text.Json 来处理这些情况(我在其他地方确实使用过),但我有几十种 POST 方法,而不是更新所有方法以使用新方法, 如上所述,这样做要容易得多。

转载请注明:SuperIT » netcore升级后frombody一直报null,

喜欢 (0)or分享 (0)

您必须 登录 才能发表评论!