2016-08-02 13 views
12

Der folgende Code wird vereinfacht, um die Notwendigkeit zu zeigen. Darf ich wissen, was falsch ist? Ich kann anscheinend nicht zwei Parameter (A und B in diesem Fall) mit dem [FromBody] -Attribut abrufen.WebAPI Selfhost: Kann mehrere Parameter nicht an den Inhalt der Anfrage binden

Die Fehlermeldung lautet „Kann nicht mehrere Parameter binden (‚A‘und‚B‘) auf den Inhalt der Anfrage“

Es ist völlig in Ordnung, wenn ich entweder A oder B nur haben.

Web API:

[Route("API/Test"), HttpPost] 
public IHttpActionResult Test([FromBody] int A, [FromBody] int B) 

Auftraggeber:

HttpClient client = new HttpClient(); 
var content = new FormUrlEncodedContent(
    new Dictionary<string, string> { 
     { "A", "123" }, 
     { "B", "456" } 
    }); 
client.PostAsync("http://localhost/API/Test", content).Result; 

Antwort

3

die Web-API-Code Versuchen:

[DataContract] 
public class Model 
{ 
    [DataMember] 
    public int A { get; set; } 

    [DataMember] 
    public int B { get; set; } 
} 

[Route("API/Test"), HttpPost] 
public IHttpActionResult Test([FromUri] Model model) 
17

Web Api nicht mehrere [FromBody] params unterstützt, denke ich. Aber Sie Api-Modell verwenden können, um weitere Parameter zu Ihrer api Aktion vorbei .:

public class YourApiModel 
{ 
    public int A{ get; set; } 

    public int B { get; set; } 

    //...other properties  
} 

Danach können Sie einfach diese Controller-Test in Ihrem API verwenden:

// POST: api/test 
    public IHttpActionResult Post([FromBody] YourApiModel model) 
    { 
     //do something 
    } 

Hoffe, es hilft.