Web Api 2 [FromBody] Post 上的请求正文为 NULL

Web Api 2 [FromBody] Request Body On Post is NULL

全部,

首先,我知道类似的问题已经被问过无数次了。 其次,我没有 50 分(?!)来评论其中任何一个。 第三,我不能使用 "Answer" 来澄清我在这些帖子上的问题 - 我收到警告,以后我将被禁止回答任何问题。

只好又问了一遍。我已经尝试了所有可能的编码 - 所有 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)
    {
    }
}

获取工作正常。不确定发生了什么。如果有人可以 copy/paste 并测试并告诉我,我将不胜感激。使用 VS 2017

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

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

在此之后,swagger ui 应该看起来像这样并且请求工作正常。

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