为什么我的复数[frombody]参数为空?

问题描述 投票:0回答:1

我无法绑定方法的[FromBody]参数时遇到麻烦。

示例C#:

[Route("api/path")]
[HttpPost]
public void Post([FromBody] ComplexType param)
{
    // param is null
}
public class ComplexType
{
    public string name { get; set;}
}

我已经检查了POST正文的内容和内容类型,看起来正确。

为什么要彻底检查发布的数据和内容类型都符合预期,为什么它为null?

N.B。这是一个故意含糊的问题,因为我在诊断问题时遇到很多麻烦,而且找不到合适的问题和答案。当我最终发现问题时,我为此踢了自己,但是我觉得有必要分享how的问题,希望有希望使其他人免于痛苦。

实际上,给出的示例可能没有任何问题。

asp.net-web-api2
1个回答
0
投票

在我的情况下,复杂类型的定义存在问题,我有一个标为string的参数,而应将其标为string[],因此解析的JSON与模型不匹配。

尽管重要的部分是我如何发现的:

调试任何API方法时,都有神奇的ModelState属性。此属性为您提供有关将接收到的数据绑定到预期参数时发生的任何故障的信息。

例如:enter image description here

在这里我们可以看到参数(uploaded),以及该参数中无法正确绑定的属性。

检查该属性的定义,您可能会发现错误。

© www.soinside.com 2019 - 2024. All rights reserved.