在asp.net web api中使用FromBody时,字符串值为空

时间:2017-01-10 00:01:09

标签: c# asp.net asp.net-web-api

我使用的是asp.net核心web api。下面是我的简单post函数,它有一个字符串参数。问题是当我使用[FromBody]时,字符串保持为空。我正在使用PostMan来测试我的服务。我希望原始数据从客户端传递到我的控制器。在邮差我选择体型RAW和 我设置标题Content-Type text / plain。 Raw Body包含Just“Hello World”字符串。

[HttpPost]
        [Route("hosted-services/tokenize-card")]
        public IActionResult Test([FromRoute]decimal businessKey,[FromBody] string body)
        {
            var data = businessKey;
            return new JsonResult("Hello World");
        }

2 个答案:

答案 0 :(得分:4)

the doc说:

  

当参数具有[FromBody]时,Web API使用Content-Type标头   选择格式化程序。

默认情况下,仅支持XML和JSON内容类型。因此,您需要使用application/xmlapplication/json或注册自定义IInputFormatter

接下来,您需要发送与所选内容类型匹配的内容。 对于json,如果参数为int则发送一个数字。如果它是一个类,则发送一个json对象。如果它是一个字符串,则发送一个json字符串。等

int => 14
string => "azerty"
class => { "propName" : "value" }
Array => []
... => ...

在您的情况下,您应该发送application/json内容类型和内容:

"Hello string"

而不仅仅是

Hello string

Aspnet core json input formatter implementation

Aspnet core xml input formatter implementation

Example: Creating a CSV Media Formatter

答案 1 :(得分:0)

我确实通过在PostMan中作为行数据进行传递来使其工作。不要忘记添加“ =” 作为这些值的前缀登录。

 public string Post([FromBody]string value)
 {
     return value;
 }

enter image description here