asp.net webapi 2 post参数始终为null

时间:2016-12-02 07:35:45

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

我一直试图在最后一小时把它弄清楚,但我看不出它有什么问题

该帖子来自我使用restsharp便携式客户端编写的xamarin应用

POST http://192.168.30.103:8080/api/Order HTTP/1.1
Authorization: Basic xxxx
Content-Length: 51
Content-Type: application/json; charset=utf-8
Host: 192.168.30.103:8080
Connection: Keep-Alive
Pragma: no-cache

{"CheckinCount":1,"EventId":16630,"OrderNo":470292}

它正确地命中服务器Post API,但参数始终为null

 public IHttpActionResult Post([FromBody]string source) {
        dynamic data = JsonConvert.DeserializeObject(source);
        int checkInCount = data.CheckinCount;
        int eventId = data.EventId;
        int orderNo = data.OrderNo;
        return Ok();
    }

我无法弄明白为什么......

3 个答案:

答案 0 :(得分:3)

您是否始终发送相同的参数?如果是这样,你可以创建一个静态对象而不是使用动态对象吗?你传递的是EventRequest之类的东西吗?

public class EventRequest
{
    public int CheckinCount { get; set; }
    public int EventId { get; set; }
    public int OrderNo { get; set; }
}

您的Post行动将变为:

public IHttpActionResult Post(EventRequest request) {
    // do something with request
    return Ok();
}

答案 1 :(得分:0)

来自this link的相关条目

简而言之,当发送使用服务器端的[frombody]属性获取的简单值时,必须在值前加上= 例如= testValue

但它可能更好的只是在API上使用JSON对象和对象绑定,即使是简单的值

答案 2 :(得分:0)

对我来说,这是由复选框发送的值。复选框发送 true 但对于 JSON,值必须在引号之间,即 "true"