2016-08-02 14 views
12

Poniższy kod jest uproszczony, aby pokazać konieczność. Czy mogę wiedzieć, co jest nie tak? Nie mogę pobrać dwóch parametrów (w tym przypadku A i B) za pomocą atrybutu [FromBody].Webhost Selfhost: nie można powiązać wielu parametrów z treścią żądania

komunikat Błąd „nie można powiązać wiele parametrów («A»i«B») do zawartości żądanie za”

Jest perfekcyjnie jeśli mam A lub B tylko.

Web API:

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

Klient:

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

Odpowiedz

3

Spróbuj kod Web API:

[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 nie obsługuje wielu [FromBody] params myślę. Ale można użyć modelu API do przechodzenia więcej parametrów do działania api .:

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

    public int B { get; set; } 

    //...other properties  
} 

Po tym, można po prostu wykorzystać to w swoim API kontrolera Test:

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

Nadzieję, że pomoże.

Powiązane problemy