我在创建可以消除两个 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。