我有下一个代码:
public class TodoController : ApiController
{
//...
public void Put([FromBody] Todo todo)
{
//Some update operation for singe todo
}
public void Put([FromBody] IEnumerable<Todo> todo)
{
//Some update operation for few todo
}
}
public class Todo
{
public Int32 Id { get; set; }
public String Title { get; set; }
public Boolean Completed { get; set; }
}
我想做几个PUT操作: 1)更新单个条目 2)一次更新条目数组
但是当我向TodoController
发出API的HttpPut请求时,它会向我显示消息:
{"Message":"An error has occurred.","ExceptionMessage":"Multiple actions were found that match the request: \r\nVoid Put(Todo) on type TodoController\r\nVoid Put(System.Collections.Generic.IEnumerable`1[Todo]) on type TodoController","ExceptionType":"System.InvalidOperationException"...
任何想法如何解决?任何进步都有很多。
答案 0 :(得分:0)
为了做到这一点,您将不得不为每个方法定义单独的路由。管理这个的一个好方法是使用Attribute routing nuget包。它使您的路由设置变得更加容易,甚至可以作为WebApi 2的一部分。可以找到它的文档here。
以下是一个例子:
//define first route
[PUT("PutMethod1")]
public void Put([FromBody] Todo todo)
{
//Some update operation for singe todo
}
//define second route
[PUT("PutMethod2")]
public void Put([FromBody] IEnumerable<Todo> todo)
{
//Some update operation for few todo
}