Web Api 2 [FromBody]发布时的请求正文为NULL

时间:2018-10-03 21:38:08

标签: post asp.net-web-api2 swagger frombodyattribute

全部

首先,我知道类似的问题被问过无数次。 其次,我没有50分(?!)来评论任何一个。 第三,我无法使用“答案”来澄清我对这些帖子的问题-我得到警告,以后我将被禁止回答任何问题。

因此被迫再次询问。我已经尝试了所有可能的编码-全部使用了5种编码,但是对于下面我的控制器的Post Body字符串,我总是得到NULL。我正在使用Swagger进行测试。

public class AmcoController : ApiController
{
    // GET: api/Amco?name=Blah
    public Amco Get(string name)
    {
        return Amco(name);
    }

    // POST: api/Amco
    public void Post([FromBody]string value)
    {
        System.Diagnostics.Debug.WriteLine("Request Body --> " + value);
    }

    // PUT: api/Amco?name=Blah
    public void Patch(string name, [FromBody]string value)
    {
    }

    // DELETE: api/Amco?name=Blah
    public void Delete(String name)
    {
    }
}

获取效果很好。不知道发生了什么。感谢有人可以复制/粘贴并测试并告诉我。使用VS 2017

1 个答案:

答案 0 :(得分:0)

我不知道为什么为什么不昂首阔步地从正文中获取单个字符串值,但是您可以执行以下解决方法:

enter image description here

更改代码以接受您的Amco对象(我认为这也是发布请求的常见情况)。

此后,swagger ui应该看起来像这样,并且请求正常运行。

enter image description here

希望这对您有所帮助,编码愉快!