打电话时
http://mysite.com/Project/42
对于下面的路由和方法,我得到“找到与请求匹配的多个操作...Get(Int32)...Children(Int32)”
打电话时
http://mysite.com/Project/42/Children
正确返回。
我的路由是:
config.Routes.MapHttpRoute(
name: "ForChildren",
routeTemplate: "api/{controller}/{id}/Children",
defaults: new { action = "Children" }
);
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
还有我的方法:
public class ProjectController : ApiController {
public IEnumerable<Project> Get(int id){
...
}
[HttpGet]
public IEnumerable<Project> Children(int id) {
...
}
}
我认为不指定操作会导致 Webapi 默认使用方法 (GET)。现在看起来 Webapi 正在运行不考虑名称的方法,只寻找参数匹配。我真的不相信这一点,并认为我在其他地方有过错。