Ich bin auf den Fluss von HTTP-Content-Negotiation verwendet, sondern etwas mit den folgenden deplaziert scheint:.NET WebAPI Parsen nicht [FromBody] richtig von Anforderungsinhalt
ich einen .NET WebAPI Controller mit dem folgende habe Inhalt:
/// <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);
}
Mit Fiddler ist der Anforderungs-Inhalt wie folgt:
POST http://localhost:43465/api/Record/SearchRecord HTTP/1.1
Host: localhost:43465
Connection: keep-alive
Content-Length: 72
Pragma: no-cache
Cache-Control: no-cache
Accept: application/json
Origin: (hidden)
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36
Content-Type: application/json
Referer: http://localhost:43465/
Accept-Encoding: gzip, deflate, br
Accept-Language: fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4
Cookie: ASP.NET_SessionId=(hidden)
{"Any":"mat","Firstname":"","Lastname":"","Birthname":"","PatientId":""}
das resultierende recordSearchModel NULL ist, wenn die WebAPI debuggen. Ich habe versucht, mit Body-Inhalt und JSON.stringify/not zu spielen und dies scheint auch nicht das Problem zu sein.
Ich muss etwas vermissen, aber ... Ich kann nicht sehen, wo! Hoffe jemand kann helfen!
EDIT: als Anfrage hier die searchPeopleModel Klasse. Ich werde die Implementierung von RecordService nicht zeigen, da es mit der Frage hier nichts zu tun hat.
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; }
}
Einige Präzision, wie ich unklar gewesen sein mag: die recordSearchModel null ist, wenn ASP.NET Web API die Anforderung empfängt, der Rest des Codes wirkt perfekt wie beabsichtigt.
Können Sie den RecordService-Code angeben. –
gleiche mit verschiedenen Modell-Klasse, Code ist funktioniert für mich. –
können Sie die SearchPeopleModel-Klasse anzeigen? –