在VS2017中,我创建了新的ASP.NET核心Web应用程序
我的示例代码获取方法完美无缺,但
POST方法始终接收null作为参数。
此方法:
[HttpPost]
public void Post([FromBody]string value)
{
System.Diagnostics.Debug.Print("\n'" + value + "'\n");
}
我试过了:
curl -X POST -H "Content-Type: application/json" -d '{"msg": "hello"}' localhost:57084/api/values
在Post值中为null。
尝试使用POSTMAN:内容类型和邮件正文的所有可能组合。 NULL作为输入。
试图通过' ='传递价值有人建议。相同,null。
试图使用动态。
public void Post(dynamic value)...
,值为空。
试图使用
public void Post([FromBody] HttpRequestMessage request)...
- 同样,null。
当我使用
时[HttpPost]
public void Post(HttpRequestMessage request) // [FromBody]
{
string body = request.Content.ReadAsStringAsync().Result;
var headers = request.Headers;
}
请求具有属性:方法:" GET",RequesrURL = null,Headers = null,Content = null
它可能是一些小而愚蠢的东西,但我似乎无法找到它。
答案 0 :(得分:1)
创建一个模型来保存发送到控制器操作的数据。
例如,给定以下JSON
{"msg": "hello"}
强类型模型看起来像
public class MyModel {
public string msg { get; set; }
}
然后重构控制器以期望该模型
[HttpPost]
public IActionResult Post([FromBody]MyModel model){
//...access the model
return Ok(model); //echo
}
答案 1 :(得分:0)
通过请求传递的请求参数与预期参数不同。 如果您定义的行为需要一个名为" value"的字符串参数,则调用请求时的预期参数将为:
{ "value" : "something here" }