繁体   English   中英

Web API [FromBody] 始终 null

[英]Web API [FromBody] always null

我目前正在创建一个写入表的 Web API。 我正在使用 [FromBody] 标签来传递表的值。

问题是 [FromBody] 值始终为 null。我使用高级 Rest 客户端来测试我的 API。

public HttpResponseMessage Post(int id, [FromBody]string value)
{
     //DO Something
}

在此处输入图像描述

问题出在类型转换上。 您正在发送一个包含一个字典的值的数组,并试图在该方法中接收一个字符串。 ASP.NET 无法将您的结构转换为string并使用 null 作为默认值。

因此,测试方法的简单方法是在正文中传递一个简单的字符串。 但正确的方法是改变 object 的类型传递给 action 方法:

public HttpResponseMessage Post(int id, [FromBody]List<Dictionary<string,string>> value)
{
     //DO Something
}

当系统解析 JSON 时手动解析很奇怪,但是你应该将string传递给该方法。 只需将您的身体包裹到"" ,您将在该方法中得到一个普通的 JSON。 您也可以通过StreamReader手动读取正文:

public HttpResponseMessage Post(int id)
{
    using (StreamReader reader = new StreamReader(Request.Body, Encoding.UTF8))
    {  
        var plainBody = reader.ReadToEnd();
    }
}

如果您不想反序列化正文,您可以只从Request.Body属性中读取字符串。

public Task<HttpResponseMessage> Post(int id)
{
    var reader = new StreamReader(Request.Body);
    var bodyString = await reader.ReadToEndAsync();

    ...
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM