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

我使用的是asp.net核心web api。 下面是我的简单post函数,它有一个字符串参数。 问题是当我使用[FromBody]时,字符串保持为空。 我正在使用PostMan来测试我的服务。 我希望原始数据从客户端传递到我的控制器。 在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"); } 

就像医生说的那样:

当参数具有[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核心json输入格式化程序实现

Aspnet核心xml输入格式化程序实现

示例:创建CSV媒体格式化程序

我确实通过在post man中传递行数据来使其工作。不要忘记在值中添加“=”符号作为前缀。

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

在此处输入图像描述