【发布时间】:2015-08-14 11:59:55
【问题描述】:
我的简单 Web api 应用程序不断返回“500 内部服务器错误”,并显示“找到与请求匹配的多个操作”消息,我认为这一定是路由问题。
Here 是有关可能对此问题产生影响的 UserController 和 WebApiConfig 文件的要点。
我在创建方法时遵循了 web api 约定,我不想在方法上使用属性来指定类型和路由。
如果我在 POST 方法上使用 Route 属性,它会起作用,但我不明白为什么它在没有该属性的情况下不起作用,因为我使用 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}");
}
欢迎任何想法。
【问题讨论】:
-
为什么使用 HTTP 请求类型作为方法名称?
-
您的控制器名称是什么,其他操作的名称是什么以及您的请求 URI 是什么样的?
-
控制器的名字是“UserController”,其他动作都包含在附在此处gist.github.com/anonymous/245da58b4bc93cd462bf的Gist中,请求URI是:localhost:2382/api/user
标签: c# post asp.net-web-api2