WebApi 2 POST方法返回“找到了多个匹配请求的操作”
本文关键字:请求 操作 POST 方法 返回 找到了 WebApi | 更新日期: 2023-09-27 18:08:00
我的简单web api应用程序一直返回"500内部服务器错误"的消息"多个动作被发现匹配的请求",我认为这一定是一个路由问题。
这里是一个关于UserController和WebApiConfig文件的要点,它们可能对这个问题有影响。
当我创建我的方法时,我遵循了web api约定,我不想在方法上使用属性来指定类型和路由。
如果我在POST方法上使用Route属性,它将工作,但是对我来说没有意义,因为我使用了POST方法的命名约定,为什么没有该属性它就不能工作。
ex that works:
[Route("api/user")]
public IHttpActionResult Post([FromBody]User user)
{
if (!ModelState.IsValid)
{
return BadRequest("Model state not valid!");
}
if (db.Users.ToList().Any(u => u.Username.ToLowerInvariant().Equals(user.Username.ToLowerInvariant())))
{
return BadRequest("Username already exists in the database!");
}
db.Users.Add(user);
db.SaveChanges();
return Ok($"Added user {user.Username}");
}
显然问题出在Dispose()方法上。此方法与Post()操作冲突,WebAPI操作选择器无法决定选择哪个操作。
让Dispose() public to protected