C# 在Asp.net Core 1.1中传递两个参数

C# 在Asp.net Core 1.1中传递两个参数,c#,asp.net-core,asp.net-core-mvc,C#,Asp.net Core,Asp.net Core Mvc,我试图在操作中以字符串的形式传递一些json,但它只适用于第一个参数 行动如下: [HttpPost("testy")] public string testyJson([FromBody] String json, [FromBody] String shortJson) { dynamic o = MyModule.replaceInJson(json, shortJson); return ""; } 以下是我传递给两个参数的json: "{\"id\":1}" 结果

我试图在操作中以字符串的形式传递一些json,但它只适用于第一个参数

行动如下:

[HttpPost("testy")]
public string testyJson([FromBody] String json, [FromBody] String shortJson)
{
    dynamic o = MyModule.replaceInJson(json, shortJson);

    return "";
}
以下是我传递给两个参数的json:

"{\"id\":1}"
结果如下

更多信息:

我正在使用swagger测试我的api,以下是我输入的内容

答案:由于性能原因,它被框架阻塞了。因此,我将使用包含JSON的字符串列表。

根据文档

每个动作最多只能有一个参数,用
[FromBody]
。ASP.NET核心MVC运行时委托 负责将请求流读取到格式化程序。一旦 请求流是为参数读取的,通常不是 可以再次读取请求流以绑定其他
[FromBody]
参数

(强调矿山)

因此,第一个参数将从主体中填充,但第二个参数不会,因为流已经被读取

我建议创建一个模型来保存要传递给操作的所有信息

public class JsonModel {
    public string json { get; set;}
    public string shortJson { get; set;}
}
…并将其用于操作参数

[HttpPost("testy")]
public IActionResult testyJson([FromBody]JsonModel model) {
    var json = model.json;
    var shortJson = model.shortJson;
    dynamic o = MyModule.replaceInJson(json, shortJson);

    return Ok();
}