[英]Web API [FromBody] always null
问题出在类型转换上。 您正在发送一个包含一个字典的值的数组,并试图在该方法中接收一个字符串。 ASP.NET 无法将您的结构转换为string
并使用 null 作为默认值。
因此,测试方法的简单方法是在正文中传递一个简单的字符串。 但正确的方法是改变 object 的类型传递给 action 方法:
public HttpResponseMessage Post(int id, [FromBody]List<Dictionary<string,string>> value)
{
//DO Something
}
当系统解析 JSON 时手动解析很奇怪,但是你应该将string
传递给该方法。 只需将您的身体包裹到""
,您将在该方法中得到一个普通的 JSON。 您也可以通过StreamReader
手动读取正文:
public HttpResponseMessage Post(int id)
{
using (StreamReader reader = new StreamReader(Request.Body, Encoding.UTF8))
{
var plainBody = reader.ReadToEnd();
}
}
如果您不想反序列化正文,您可以只从Request.Body
属性中读取字符串。
public Task<HttpResponseMessage> Post(int id)
{
var reader = new StreamReader(Request.Body);
var bodyString = await reader.ReadToEndAsync();
...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.