【发布时间】:2017-04-01 05:30:35
【问题描述】:
我有一个简单的 web api,但是当我用 Postman 测试它时,方法参数为空。我查看了其他类似标题的问题,但没有找到答案。
这是我的控制器操作:
[HttpPost]
public Member Create([FromBody] string payload)
{
var s = Request.Content.ReadAsStringAsync();
if (payload == null)
{
throw new ArgumentNullException(nameof(payload));
}
Console.WriteLine(payload);
Console.WriteLine(s);
return null;
}
在标题选项卡中,我将content-type 添加为application/json。
当我调试这个时,payload 变量总是null 并且字符串s 包含类似
Id = 98, Status = RanToCompletion, Method = "{null}", Result = ""
那我做错了什么?
【问题讨论】:
-
只将字符串(非 JSON)放入正文会发生什么?
-
阅读本文,您将了解参数绑定的错误之处。 Parameter Binding in ASP.NET Web API 另一个错误是在尝试将内容读取为字符串时输出的是任务而不是任务的结果
-
@Donal 如果我输入一个简单的字符串就可以了。但为什么呢?
-
@BudaGavril 检查我上一条评论中的链接并阅读有关使用 [FromBody] 属性的信息。这就是为什么
-
@BudaGavril 对于复杂类型,Web API 尝试使用媒体类型格式化程序从消息正文中读取值。 JSON 被解释为复杂类型。如果你的参数是一个字符串,你应该把一个字符串放到正文中。
标签: c# asp.net-web-api2 postman