Asp.net web api 调用web api PUT FromBody“;“价值”;总是空的

Asp.net web api 调用web api PUT FromBody“;“价值”;总是空的,asp.net-web-api,asp.net-core,Asp.net Web Api,Asp.net Core,我试图使用cURL调用ValuesController WebApi控制器(默认情况下创建的)“PUT”方法。无论我做什么,发送value=“abc”、“abc”或“=abc”,正如我在POST方法的其他问题中所看到的那样,都是无效的 // PUT api/values/5 [HttpPut("{id}")] public void Put(int id, [FromBody]string value) { } 我

我试图使用cURL调用ValuesController WebApi控制器(默认情况下创建的)“PUT”方法。无论我做什么,发送value=“abc”、“abc”或“=abc”,正如我在POST方法的其他问题中所看到的那样,都是无效的

        // PUT api/values/5
        [HttpPut("{id}")]
        public void Put(int id, [FromBody]string value)
        {
        }
我还尝试将内容类型更改为application/json和application/x-www-form-urlencoded,但似乎没有任何效果

curl -H -d "=TEST" -X PUT  http://localhost:30960/api/values/5

这是ASP.NET 5 Web Api中的错误还是调用时需要使用不同的格式?

要使其正常工作,需要将其作为简单字符串传递:

"any value here"
甚至对这种行为也有一种解释

请记住在发出请求时添加
application/json
Content-Type头

我刚刚测试了PUT和POST请求

使用curl,它是:

curl -H "Content-Type: application/json" -d "'Test'" -X PUT http://localhost:[port]/api/values/5

如果将数据发布为
application/x-www-form-urlencoded
,则需要删除
FromBody
属性。这是MVC5/WebAPI2的行为变化


如果将数据发布为
application/json
,则需要
FromBody
和可绑定的类型。例如:

public class Person
{
   public string Name {get; set;}
}

对于数据
{“Name”:“James”}

您可以用cURL调用它吗?您可能在正文字符串中缺少引号。请参阅updateI,我只是希望能够调用来自模板的Put方法,签名如问题所示。