ASP.Net Core Web 应用程序 POST 方法始终接收 NULL 作为参数
Posted
技术标签:
【中文标题】ASP.Net Core Web 应用程序 POST 方法始终接收 NULL 作为参数【英文标题】:ASP.Net Core web app POST method always receives NULL as a parameter 【发布时间】:2018-09-28 00:31:06 【问题描述】:在 VS2017 中我创建了新的 ASP.NET Core Web 应用程序
我的示例代码 Get 方法运行良好,但是
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
In Post 值为空。
尝试使用 POSTMAN: 与内容类型和消息正文的所有可能组合。 NULL 作为输入。
尝试按照某人的建议使用“=”传递值。一样,null。
尝试使用动态。
public void Post(dynamic value)...
,值为空。
尝试使用
public void Post([FromBody] HttpRequestMessage request)...
-- 相同,为空。
我用的时候
[HttpPost]
public void Post(HttpRequestMessage request) // [FromBody]
string body = request.Content.ReadAsStringAsync().Result;
var headers = request.Headers;
请求具有属性:方法:“GET”,RequesrURL=null,Headers=null,Content=null
它可能是一些小而愚蠢的东西,但我似乎还找不到它。
【问题讨论】:
【参考方案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
【讨论】:
【参考方案2】:通过请求传递的请求参数与预期不同。 如果您定义的操作需要一个名为“value”的字符串参数,则调用请求时的预期参数将是:
"value" : "something here"
【讨论】:
以上是关于ASP.Net Core Web 应用程序 POST 方法始终接收 NULL 作为参数的主要内容,如果未能解决你的问题,请参考以下文章
将文件从 ASP.NET Core Web api 发布到另一个 ASP.NET Core Web api
ASP.NET Core Web 应用程序系列- 在ASP.NET Core中使用AutoMapper进行实体映射
net core体系-web应用程序7asp.net core日志组件
ASP.NET Core Web 应用程序系列- 在ASP.NET Core中使用Autofac替换自带DI进行批量依赖注入(MVC当中应用)