我有以下Asp.Net Web Api v2控制器 - 就像一个基本的例子:
[HttpPost]
public IHttpActionResult TestPost([FromBody]string value)
{
l.TestNotify(value, "test");
return Ok();
}
当我通过一个简单的" Hello world"将JSON请求传递给控制器时 - 我能够获得价值没问题。当我使用更复杂的JSON时,value参数返回空。
我使用restsharp测试了相同的JSON和测试程序,它运行正常。
以下是请求:
Content-Type application/json; charset=utf-8
Accept-Encoding gzip;q=1.0,deflate;q=0.6,identity;q=0.3
Accept */*
Content-Length 743
这是Json片段:
{
"ticket": {
"url": "",
"id": "",
"external_id": null,
"FromEmail": "cody",
"via": "Mail",
}
}
我的猜测是请求差异之间有一些关系,但没有任何明显的想法。其他用于读取请求内容的方法或我对上述http请求的理解的调整将是值得赞赏的。
答案 0 :(得分:1)
不要使用string
,而是为输入类型创建一个类。
这就是课程的样子:
public class Ticket
{
public string url { get; set; }
public string id { get; set; }
public object external_id { get; set; }
public string FromEmail { get; set; }
public string via { get; set; }
}
public class TicketRoot
{
public Ticket ticket { get; set; }
}
然后使用控制器中的TicketRoot
类型代替string
。