Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# asp.net webapi 2 post参数始终为空_C#_Asp.net_Asp.net Web Api_Asp.net Web Api2 - Fatal编程技术网

C# asp.net webapi 2 post参数始终为空

C# asp.net webapi 2 post参数始终为空,c#,asp.net,asp.net-web-api,asp.net-web-api2,C#,Asp.net,Asp.net Web Api,Asp.net Web Api2,在过去的一个小时里,我一直在想这个问题,但我看不出有什么问题 这篇文章来自我正在编写的xamarin应用程序,使用restsharp便携式客户端 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 Connectio

在过去的一个小时里,我一直在想这个问题,但我看不出有什么问题

这篇文章来自我正在编写的xamarin应用程序,使用restsharp便携式客户端

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}
它正确地命中ServerPostAPI,但参数始终为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();
    }

我不明白为什么…

您总是发送相同的参数吗?如果是这样,你能创建一个静态对象而不是使用动态对象吗?类似于您传入的
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();
}
相关条目来自

简而言之,在服务器端发送要使用[frombody]属性拾取的简单值时,必须在值前面加上前缀= e、 g.=测试值


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

对于我来说,它是由复选框发送的值。复选框正在发送true,但对于JSON,值必须介于引号之间,即“true”

为什么要手动进行反序列化而不将其留给web api?
{“CheckinCount”:1,“EventId”:16630,“OrderNo”:470292}
不是字符串。相反,它是一个对象。我不想为最后一分钟的API插件添加另一个DTO,但我会给它一个成功的例子,但是如果我想从body读取原始json,我仍然很感兴趣,我会怎么做?只是为了我自己的注意,如果你忘记了属性上的public,它不会给你一个错误,只是一个属性值为null的空对象。我保证再也不会复制和粘贴代码了!