Wir erstellen RestService mit Asp.Net WebApi. Aber aus irgendeinem Grund Name
Eigenschaft wird ignoriert in DataMember
Attribut beim Versuch, komplexe Eigenschaft mit [FromURI]
Attribut zu deserialisieren.Die Name-Eigenschaft von DataMember wird mit der Eigenschaft [FromUri] im WebApi-Service ignoriert
Zum Beispiel könnten wir haben: Methode:
public IHttpActionResult Get([FromUri]User user)
Modell:
[DataContract]
public class User
{
[DataMember(Name = "username")]
public string Username{ get; set; }
[DataMember(Name = "isActive", IsRequired = false)]
public bool? Active { get; set; }
}
Wenn user
wir Benutzernamen erhalten Deserialisieren wie erwartet, aber null
für Active
. Auf der anderen Seite erhalten wir beim Serialisieren von Daten sowohl isActive
als auch username
wie erwartet. Wenn wir eine Anfrage mit active
in der Abfragezeichenfolge senden, funktioniert es wie erwartet.
Es ist offensichtlich Problem mit . Es verwendet DataMember
's Name
Eigenschaft aus irgendeinem Grund nicht. Ich habe, was formaters sind enthalten und 4 auch keine registriert sind:
System.Net.Http.Formatting.JsonMediaTypeFormatter
System.Net.Http.Formatting.XmlMediaTypeFormatter
System.Net.Http.Formatting.FormUrlEncodedMediaTypeFormatter
System.Net.Http.Formatting.JQueryMvcFormUrlEncodedFormatter
Ich habe keine Möglichkeit haben, zu überprüfen, welche auf Anfrage verwendet wird. Ich würde davon ausgehen, dass es FormUrlEncodedMediaTypeFormatter
aber ich kann mir nicht sicher sein. Außerdem bin ich mir nicht sicher, ob es überhaupt Name
Eigenschaft unterstützt.
Ich habe bereits nach einer Lösung überprüft und das nächste Thema, das ich finden konnte, war WebAPI DataMember Name not used when de/serializing via application/x-www-form-urlencoded, aber es verwendet nicht [FromUri]
sondern application/x-www-form-urlencoded
Eigentum und es wurde nicht wirklich gelöst.
Alle Ideen, Hinweise oder Vorschläge würden sehr geschätzt werden.
Haben Sie jemals herausgefunden, was los war? Ich stehe vor demselben Problem. – Zuhaib
Leider nicht ... Ich habe mit WebAci Frieden geschlossen und habe damit gearbeitet ... – Igor
Dies wurde auch hier berichtet https://forums.asp.net/t/2095416.aspx?Binding+FromUri+to+complex + Objekt + ignoriert + DataMember + Name. Wenn Sie DataContract verwenden möchten, empfehle ich, von HttpGet zu HttpPost zu wechseln. Andernfalls müssen Sie sich mit dem Fehler befassen. Meine 2 Cent. –