【发布时间】:2016-05-24 03:14:48
【问题描述】:
我有一个控制器动作声明为:
[Route("api/person")]
[HttpPost]
public async Task<IActionResult> Person([FromBody] Guid id) { ... }
我发帖给它:
POST /api/person HTTP/1.1
Host: localhost:5000
Content-Type: application/json
Cache-Control: no-cache
Postman-Token: 747a5d76-398c-e1c7-b948-b276bb24976c
{
"id": "b85f75d8-e6f1-405d-90f4-530af8e060d5"
}
我的操作被击中,但它接收到的 Guid 始终是 Guid.Empty 值(即:它没有得到我传递的值)。
注意,如果我使用 url 参数而不是 [FromBody],这可以正常工作,但我想使用 http 帖子的正文。
【问题讨论】:
-
id 不应该是原始 JSON 字符串而不是对象吗?所以只是“b85f75d8-e6f1-405d-90f4-530af8e060d5”?
-
另外,传入一个字符串,然后将 TryParse 传递给 Guid。我会在我的机器上测试这个,但我的 VS 正在安装。
-
不错的主意。我正在使用移动设备,但会在早上进行测试。
标签: asp.net-mvc asp.net-web-api asp.net-core-mvc