asp.net webapi 2 post parameter is always null

吃可爱长大的小学妹 提交于 2019-12-02 09:06:31

问题


I have been trying to figure this our for the last hour, but I can't see what's wrong with it

the post is from a xamarin app that I'm writing, using restsharp portable client

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}

It hits the server Post API correctly, but the parameter is always 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();
    }

I can't figure out why...


回答1:


Do you always send the same parameters? If so, could you create a static object instead of using a dynamic one? Something like an EventRequest that you pass in instead?

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

Your Post action then becomes:

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



回答2:


related entry from this link

in short, when sending simple values which are to be picked up using [frombody] attribute on the server side, you have to prefix the value with = e.g. =testValue

but its probably better just to use JSON Objects and object bindings on the API, even for simple values



来源:https://stackoverflow.com/questions/40927031/asp-net-webapi-2-post-parameter-is-always-null

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!