【问题标题】:ASP.Net Core web app POST method always receives NULL as a parameterASP.Net Core Web 应用程序 POST 方法始终接收 NULL 作为参数
【发布时间】:2018-09-28 00:31:06
【问题描述】:
  1. 在 VS2017 中我创建了新的 ASP.NET Core Web 应用程序

  2. 我的示例代码 Get 方法运行良好,但是

  3. 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

它可能是一些小而愚蠢的东西,但我似乎还找不到它。

【问题讨论】:

    标签: c# asp.net-core asp.net-core-routing


    【解决方案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" }
      

      【讨论】:

        猜你喜欢
        • 2021-01-26
        • 1970-01-01
        • 2020-11-06
        • 1970-01-01
        • 2016-11-22
        • 2017-06-07
        • 2017-06-06
        • 2017-02-06
        • 2017-08-28
        相关资源
        最近更新 更多