WebAPI Selfhost: невозможно связать несколько параметров с содержимым запроса

Приведенный ниже код упрощен, чтобы показать необходимость. Могу ли я узнать, что не так? Кажется, я не могу получить два параметра (A и B в этом случае), используя атрибут [FromBody].

Сообщение об ошибке "Невозможно связать несколько параметров (" A "и" B ") с содержимым запроса"

Это прекрасно, если у меня есть только A или B.

Веб-API:

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

Клиент:

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

Ответ 1

Я думаю, что Web Api не поддерживает несколько параметров [FromBody]. Но вы можете использовать модель Api, чтобы передать больше параметров вашему действию api:

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

    public int B { get; set; }

    //...other properties    
}

После этого вы можете просто использовать это в своем контроллере API. Test:

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

Надеюсь, это поможет.

Ответ 2

Попробуйте код веб-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)