WebApi 2 POST 方法 returns "Multiple actions were found that match the request"
WebApi 2 POST Method returns "Multiple actions were found that match the request"
我的简单 Web api 应用程序不断返回“500 内部服务器错误”消息 "Multiple actions were found that match the request",我认为这一定是路由问题。
Here 是 UserController 和 WebApiConfig 文件的要点,可能会影响此问题。
我在创建方法时遵循了 Web api 约定,我不想在方法上使用属性来指定类型和路由。
如果我在 POST 方法上使用 Route 属性,它会起作用,但我不明白为什么它不起作用 w/o 该属性,因为我使用POST 方法的命名约定。
有效的例子:
[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 受保护。
我的简单 Web api 应用程序不断返回“500 内部服务器错误”消息 "Multiple actions were found that match the request",我认为这一定是路由问题。
Here 是 UserController 和 WebApiConfig 文件的要点,可能会影响此问题。
我在创建方法时遵循了 Web api 约定,我不想在方法上使用属性来指定类型和路由。
如果我在 POST 方法上使用 Route 属性,它会起作用,但我不明白为什么它不起作用 w/o 该属性,因为我使用POST 方法的命名约定。
有效的例子:
[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 受保护。