gpt4 book ai didi

C# Web API POST 参数 FromBody 始终为 null

转载 作者:行者123 更新时间:2023-11-30 17:36:52 35 4
gpt4 key购买 nike

我已经在网上搜索了几个小时,并尝试了许多不同的解决方案,这些解决方案也在 StackOverflow 上进行了描述。我知道以前有人问过类似的问题,但没有一个答案或评论对我有用。

问题:我有一个 .NET Web API,它有一个带有一些参数的 Post-method。其中一个参数是一个复杂的对象,应该从正文(即 JSON)中读取。但是,此对象始终为空

这是我的代码:

// POST api/worksheets/post_event/true/false
[Route("post_event/{newWorksheet}/{eindEvent}")]
[HttpPost]
public Event Post(bool newWorksheet, bool eindEvent, [FromBody] Event eventData)
{
return eventData;
}

明确一点:eventData 是始终为空的对象。 bool 值被正确读取。

完整的请求正文是:

POST http://localhost:5000/api/worksheets/post_event/true/false
Content-Type: application/json
{"Persnr":1011875, "WorksheetId":null, "Projectnr":81445, "Uursoort":8678, "Tijd":{"09-08-2016 9:25"}}

作为引用,这是事件类:

public class Event
{
public long Persnr { get; set; }
public int WorksheetId { get; set; }
public int Projectnr { get; set; }
public int Uursoort { get; set; }
public DateTime Tijd { get; set; }
}

我已经尝试过的一些事情:

  • 将 JSON 更改为不同的格式(只有值,“Event”:围绕实际对象的 {},JSON 前面的 =)。
  • 仅使用事件参数进行测试(删除其他参数以及路由中的参数)
  • 向事件添加默认构造函数。
  • 删除 [FromBody] 标签。如果我这样做,事件对象不为空,但所有属性都是。可以通过 URI 填充属性,但这不是所需的行为。

根据我阅读的所有解决方案和文档,它应该按照我在上面显示的方式简单地工作。我错过了什么?

最佳答案

您的 json 对象无效。我的建议是始终运行通过 json 解析器手动编写的 json 对象,如下所示:http://json.parser.online.fr/

"Tijd":{"09-08-2016 9:25"}

应该是

"Tijd":["09-08-2016 9:25"]

关于C# Web API POST 参数 FromBody 始终为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38854422/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com