我在创建路由或其他配置时遇到问题,这些配置会消除两个Get方法的歧义。这是一个示例类:
public class UsersController : ApiController
public User[] GetMany([FromUri]int[] id)
{
// returns all users requested by id
}
public User[] GetAll()
{
// returns all users
}
}
我希望myhost/api/users
映射到GetAll
,myhost/api/users?id=123
映射到GetMany
。
现在它们都产生500错误,因为两个方法都匹配为两个URI的可能操作。
这是我的路线:
routes.MapHttpRoute(
name: "AllUsersRoute",
routeTemplate: "api/users",
defaults: new { },
constraints: new { }
);
虽然我知道在这个简单的例子中,GetMany
方法可以更改为将空ID列表视为对所有人的请求,但在更复杂的情况下可能不是这种情况。
注意,我正在使用MVC 4 Web API,Visual Studio 2010。
答案 0 :(得分:3)