使用 Fiddler 发布时使用 FromBodyAttribute 的 WebAPI 模型为空

WebAPI model is null using FromBodyAttribute when posting using Fiddler

您好,还有一个post请求为空的问题。我提到了所有关于相同内容的 posts,这使它更加混乱。

我的问题如下 我有一个实体 Class

public class ProductEntity
{
    public int ProductId { get; set; }
    public string ProductName { get; set; }
}

和控制器class

// POST api/product
public int Post([FromBody]ProductEntity productEntity)
{
    return _productServices.CreateProduct(productEntity);
}

我正在使用带有这些选项的 fiddler,如下图所示

在提琴手尝试 post 之后,我总是得到空值。

我遵循了 post 并根据描述,因为 Product 是一个复杂类型,我不应该使用 FromBody 属性,但无论如何我都无法获取对象,而只有 null 是通过。

我什至遵循了 msdn link for parameter-binding-in-aspnet-web-api 但感到困惑。请让我知道我做错了什么。

据我所知,您的代码是正确的,但是您尝试在 fiddler composer 中发送的内容格式不正确 JSON,因此您的模型未被解析。因此为空值。

这是您根据附加图片尝试发送的内容

{
"ProductId":8
"ProductName":"MobilePhone"
}

请注意,您在 "ProductId":8

之后缺少一个逗号 ,

这是您应该发送的内容

{
"ProductId":8,
"ProductName":"MobilePhone"
}

我终于成功地用 fiddler 发送了一个 POST - 我需要把

Content-Type: application/x-www-form-urlencoded

在请求头中,在JSON语句前加一个=:

={"Name":"Turbo Tina","Email":"na@Turbo.Tina"}

我受到这个关于 WCF 和 Fiddler 的 post 的启发:POST to WCF from Fiddler succeeds but passes null values

如果我而不是 "simple" 类型的字符串需要方法中的 JObject:

  public dynamic Post([FromBody]JObject value)

我可以用

Content-Type: application/json

并删除 JSON 语句前的 =。