2

更新:解决了!这里没什么可看的,请继续:-)

我有一个ApiControllerSystem.Version参数的方法。参数以 JSON 格式在请求正文中传递。这是发送的内容:

{“主要”:0,“次要”:7,“构建”:0,“修订”:0,“主要修订”:0,“次要修订”:0}

路由有效 - 正在调用我的方法 - 但参数有一个空Version对象(所有值为零)。为什么?

这是控制器方法的声明:

    // POST api/service/details
    [HttpPost]
    [ActionName("Details")]
    public ServiceDto Get(Version version)
    {
    }
4

2 回答 2

1

为了防止其他人试图回答这个问题,答案是 System.Version 类的成员没有公共设置器。因此它不能被正确地反序列化,并且保持在它的初始状态。我必须使用我自己的具有可公开设置成员的“版本”类,并且效果很好。

于 2012-09-27T13:26:26.070 回答
0

我不认为 [Serializable] 可能是一个问题。

尝试将 'Content-Type: application/json' 作为客户端的标头。也像这样使用 [FromBody] 属性。

[HttpPost]
[ActionName("Details")]
public ServiceDto Get([FromBody]Version version)
{
}
于 2012-09-27T11:46:08.447 回答