我的WebApiConfig.cs
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.EnableQuerySupport();
}
}
我的控制器文件是:
namespace myApp.Data
{
public class AccountController : ApiController
{
public List<User> XGetUsers()
{
List<User> Users;
using (Entities db = new Entities())
{
var users = from u in db.Users select u;
Users = users.ToList();
}
return Users;
}
// GET api/<controller>/5
public string Get(int id)
{
return "value";
}
}
}
但每当我尝试调用localhost时:51255 / api / Account / XGetUsers我一直收到400错误:
{“消息”:“请求无效。”,“MessageDetail”:“参数 字典包含非可空参数'id'的空条目 输入方法'System.String Get(Int32)'的'System.Int32' myApp.Data.AccountController”。可选参数必须是a 引用类型,可空类型,或声明为可选 参数。“}
似乎所有调用都转到方法Get(int id)。有什么问题?
答案 0 :(得分:4)
您的路线缺少行动:
routeTemplate: "api/{controller}/{action}/{id}",
所以它认为{id}
是XGetUsers
。
答案 1 :(得分:1)
您似乎只定义了一种可能性:控制器后面的部分是一个id。只有一个匹配的动作,因此该动作是唯一被调用的候选者。
也许您还想添加"api/{controller}/{action}/{id}"
以匹配其他候选人。