更新:已解决!这里没什么可看的,请继续: - )
我有ApiController
方法,它采用System.Version
参数。该参数作为JSON在请求体中传递。这是发送的内容:
{ “少校”:0, “轻微”:7, “建立”:0, “修订版”:0, “MajorRevision”:0, “MinorRevision”:0 }
路由工作 - 我的方法被调用 - 但参数有一个空的Version
对象(所有值为零)。为什么呢?
这是控制器方法的声明:
// POST api/service/details
[HttpPost]
[ActionName("Details")]
public ServiceDto Get(Version version)
{
}
答案 0 :(得分:1)
为了防止其他人试图回答这个问题,答案是System.Version类在其成员上没有公共setter。因此,它无法正确反序列化,并保持其初始状态。我不得不使用我自己的“版本”类,该类具有可公开设置的成员,并且工作正常。
答案 1 :(得分:0)
我不认为[Serializable]可能是一个问题。
尝试将'Content-Type:application / json'作为客户端的标题。 也可以像这样使用[FromBody]属性。
[HttpPost]
[ActionName("Details")]
public ServiceDto Get([FromBody]Version version)
{
}