我在嵌套 Web API 路由设置方面遇到了困难。
给定一个路由配置:
config.Routes.MapHttpRoute(
name: "UsersGroups",
routeTemplate: "api/users/{userID}/groups/{groupID}",
defaults: new { controller = "UsersGroups", groupID = UrlParameter.Optional }
);
和控制器动作如下:
public AuthGroup Get(long userID, int groupID)
{
//Get specific group here
}
public IEnumerable<AuthGroup> Get(long userID)
{
//get all groups for user here
}
调用此路由/api/users/1528/groups
会出现此错误:
参数字典包含用于方法in
groupID
的不可为空类型的参数的空条目。可选参数必须是引用类型、可空类型或声明为可选参数。System.Int32
AuthGroup Get(Int64, Int32)
UsersGroupsController
我期待它使用单个 long 参数来获取动作,但显然出于某种原因,它忽略了这一点并直接针对具有最多参数的那个。
根据 MS 提供的关于 Web API 如何解释路由的信息:http ://www.asp.net/web-api/overview/web-api-routing-and-actions/routing-and-action-selection我认为我是什么have 应该是正确的,但显然它并没有像它应该的那样工作。