我有两个得分:
[HttpGet]
[Route("api/users")]
public HttpResponseMessage GetSpecificUser(int id)
{
var foundUser = Users.FirstOrDefault(user => user.ID == id);
return Json(foundUser).ExecuteAsync(CancellationToken.None).Result;
}
[HttpGet]
[Route("api/users")]
public HttpResponseMessage GetAllUsers()
{
return Json(Users).ExecuteAsync(CancellationToken.None).Result;
}
只有GetAllUsers似乎有效。 (通过http://localhost:61800/api/users)
访问尝试按http://localhost:61800/api/users/1
访问GetSpecificUser我在这两种方法中都设置了断点,但只有GetAllUsers被击中。
我使用默认的RouteConfig
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
为什么不具体的Get工作?
答案 0 :(得分:2)
确保在路由定义中包含{id}
令牌:
[Route("api/users/{id}")]
public HttpResponseMessage GetSpecificUser(int id)