WebAPI Selfhost:无法将多个参数绑定到请求的内容

s k*_*s k 33 c# asp.net-web-api

下面的代码被简化以显示必要性.我可以知道出了什么问题吗?我似乎无法使用[FromBody]属性检索两个参数(在本例中为A和B).

错误消息是"无法将多个参数('A'和'B')绑定到请求的内容"

如果我只有A或B,那就完全没问题了.

Web API:

[Route("API/Test"), HttpPost]
public IHttpActionResult Test([FromBody] int A, [FromBody] int B)
Run Code Online (Sandbox Code Playgroud)

客户:

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

Pet*_*šek 50

我认为Web Api不支持多个[FromBody]参数.但您可以使用Api模型,将更多参数传递给您的api操作:

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

    public int B { get; set; }

    //...other properties    
}
Run Code Online (Sandbox Code Playgroud)

之后,您可以在API控制器测试中使用它:

    // POST: api/test
    public IHttpActionResult Post([FromBody] YourApiModel model)
    {
        //do something
    }
Run Code Online (Sandbox Code Playgroud)

希望它有所帮助.


小智 7

尝试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)
Run Code Online (Sandbox Code Playgroud)