Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json .NET WebAPI未从请求内容正确解析[FromBody]_Json_Post_Asp.net Web Api - Fatal编程技术网

Json .NET WebAPI未从请求内容正确解析[FromBody]

Json .NET WebAPI未从请求内容正确解析[FromBody],json,post,asp.net-web-api,Json,Post,Asp.net Web Api,我已经习惯了HTTP内容协商的流程,但以下内容似乎不合适: 我有一个具有以下内容的.NET WebApi控制器: /// <summary> /// Search for Records corresponding to the given criterias /// </summary> [AcceptVerbs("POST")] public async Task<IHttpActionResult> SearchR

我已经习惯了HTTP内容协商的流程,但以下内容似乎不合适:

我有一个具有以下内容的.NET WebApi控制器:

    /// <summary>
    /// Search for Records corresponding to the given criterias
    /// </summary>
    [AcceptVerbs("POST")]
    public async Task<IHttpActionResult> SearchRecord([FromBody]SearchPeopleModel recordSearchModel)
    {
        var recordService = Context.Services.Get<IRecordService>();
        var result = await recordService.SearchRecord(recordSearchModel);
        return Jsonify(result);
    }
调试WebApi时,生成的recordSearchModel为NULL。 我已经尝试使用body内容和JSON.stringify/not,这似乎也不是问题所在

我一定错过了什么,但是。。。我不知道在哪里!希望有人能帮忙

编辑:根据请求,这里是searchPeopleModel类。我不会展示RecordService的实现,因为它与这里的问题无关

public class SearchPeopleModel
{
    public string Any {get; set;}
    public string Firstname { get; set; }
    public string Lastname { get; set; }
    public string Birthname { get; set; }
    public DateTime? BirthDate { get; set; }
    public Guid? PatientId { get; set; }
}

一些我可能不清楚的精确性:当ASP.NET WEB API接收到请求时,recordSearchModel为空,其余代码完全按照预期运行。

我终于找到了答案

它将显示参数

public Guid? PatientId { get; set; }
默认情况下,asp.net webapi无法从SearchPeopleModel反序列化。 为使此类行为有效,我们必须发送:

{"Any":"mat","Firstname":"","Lastname":"","Birthname":""}
而不是:

{"Any":"mat","Firstname":"","Lastname":"","Birthname":"","PatientId":""}
原因: “”无法转换为有效的空Guid。 “[某些有效guid]”仍然有效


希望它能帮助别人。

我终于找到了答案

它将显示参数

public Guid? PatientId { get; set; }
默认情况下,asp.net webapi无法从SearchPeopleModel反序列化。 为使此类行为有效,我们必须发送:

{"Any":"mat","Firstname":"","Lastname":"","Birthname":""}
而不是:

{"Any":"mat","Firstname":"","Lastname":"","Birthname":"","PatientId":""}
原因: “”无法转换为有效的空Guid。 “[某些有效guid]”仍然有效


希望它能帮助别人。

你能提供RecordService代码吗?不同型号的代码相同,对我有效。你能显示SearchPeopleModel类吗?根据要求,编辑添加了SearchPeopleModel类,对我仍然有效。你能提供RecordService代码吗?不同型号的代码相同,代码对我有效。你能显示SearchPeopleModel类吗?根据要求,编辑添加了SearchPeopleModel类。它对我仍然有效