【发布时间】:2017-01-24 11:39:23
【问题描述】:
当我在 MVC 控制器中使用此方法时
[HttpPost]
public async Task<ActionResult> MyMethod(int param1, string param2)
{
//....
}
我可以发送一个 Json 对象{param1:1, param2:"str"} 它工作得很好并且参数被解析。但是,当我为 WebApi 2 执行此操作时,它不起作用。因为根据文档中的以下示例,[FromBody] 只能由 1 个参数使用。
At most one parameter is allowed to read from the message body
// Caution: Will not work!
public HttpResponseMessage Post([FromBody] int id, [FromBody] string name) { ... }
我们如何才能从 WebApi 控制器中获得与 MVC 控制器相同的行为?
编辑:创建相应的类和替换参数不是一种选择,因为消息传递工具会检查这些方法以进行维护。签名应保持不变。
【问题讨论】:
-
您编辑提供了不可能的任务 - 最多一个参数可以从正文中读取为:“此规则的原因是请求正文可能存储在只能读取的非缓冲流中一次。”
-
@VadimLevkovsky 你是绝对正确的。但是,由于签名保持不变,我只是让该方法同时接受 GET 和 POST。当我们在 url 中发送带有参数的 GET 时,它可以工作。
-
无法做到这一点是很痛苦的
标签: c# asp.net json asp.net-mvc asp.net-web-api