【问题标题】:WebAPI model is null using FromBodyAttribute when posting using Fiddler使用 Fiddler 发布时使用 FromBodyAttribute 的 WebAPI 模型为空
【发布时间】:2016-07-06 15:32:45
【问题描述】:

您好,再发一个请求为空的问题。我提到了所有关于相同的帖子,这使得它更加混乱。

我的问题是下面我有一个实体类

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

和控制器类

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

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

在尝试从提琴手发帖后,我总是得到空值。

我关注了一个帖子并根据描述,因为 Product 是一种复杂类型,我不应该使用 FromBody 属性,但无论如何我无法获取对象,而是只有 null 被传递。

我什至关注了 parameter-binding-in-aspnet-web-api 的 msdn 链接,但感到困惑。请让我知道我做错了什么。

【问题讨论】:

    标签: c# asp.net-web-api2 fiddler


    【解决方案1】:

    据我所知,您的代码是正确的,但是您尝试在提琴手作曲家中发送的 JSON 格式不正确,因此您的模型没有被解析。因此是空值。

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

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

    请注意,"ProductId":8 后面缺少逗号 ,

    这是您应该发送的内容

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

    【讨论】:

    • 现货!!我为此浪费了2到3个小时!谢谢你:)
    【解决方案2】:

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

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

    在请求标头中并在 JSON 语句之前添加一个 =:

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

    这篇关于 WCF 和 Fiddler 的帖子启发了我:POST to WCF from Fiddler succeeds but passes null values

    如果我而不是“简单”类型的字符串在方法中需要一个 JObject:

      public dynamic Post([FromBody]JObject value)
    

    我可以使用

    Content-Type: application/json
    

    并删除 JSON 语句之前的 =。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-13
      • 2013-01-17
      • 1970-01-01
      • 1970-01-01
      • 2015-10-29
      • 1970-01-01
      • 2015-03-11
      • 2019-04-07
      相关资源
      最近更新 更多