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}");
    }

WebApi 2 POST方法返回“找到了多个匹配请求的操作”

显然问题出在Dispose()方法上。此方法与Post()操作冲突,WebAPI操作选择器无法决定选择哪个操作。

让Dispose() public to protected