Asp.net web api 为什么WebApi无法绑定System.Version参数?

Asp.net web api 为什么WebApi无法绑定System.Version参数?,asp.net-web-api,model-binding,Asp.net Web Api,Model Binding,更新:已解决!这里没什么可看的,请继续:-) 我有一个ApiController方法,它接受一个System.Version参数。参数以JSON的形式在请求体中传递。这是发送的内容: { “主要”:0, “小调”:7, “构建”:0, “修订”:0, “MajorRevision”:0, “MinorRevision”:0 } 路由工作-正在调用我的方法-但参数有一个空的Version对象(所有值均为零)。为什么? 以下是控制器方法的声明: // POST api/service/det

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

我有一个
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)
    {
    }

我不认为[Serializable]会成为一个问题

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

[HttpPost]
[ActionName("Details")]
public ServiceDto Get([FromBody]Version version)
{
}

为了防止其他人尝试回答此问题,答案是System.Version类的成员上没有公共setter。因此,它无法正确反序列化,并保持其初始状态。我必须使用我自己的“版本”类,该类具有可公开设置的成员,并且运行良好。

啊,这就是为什么。。。它是不可序列化的:我已经拥有了这两种东西。我真的不认为有任何疑问,我得到的行为仅仅是由于版本类在其成员上没有公共设置器这一事实。因此,它无法正确反序列化,并保持其初始状态。当我从使用System.Version切换到我自己的Version类副本时,它工作得很好。