我在web api控制器中添加了一个方法:
public String GetpeopleInFamily(string familyId)
我跟随了这个问题的一些例子:Custom method names in ASP.NET Web API
我根据上面的内容更新了我的RouteConfig.cs文件:public static void RegisterRoutes(RouteCollection routes){routes.IgnoreRoute(“ .axd / {* pathInfo}”);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { id = UrlParameter.Optional }
);
routes.MapHttpRoute("DefaultApiWithId", "Api/{controller}/{id}", new { id = RouteParameter.Optional }, new { id = @"\d+" });
routes.MapHttpRoute("DefaultApiWithAction", "Api/{controller}/{action}");
routes.MapHttpRoute("DefaultApiWithActionAndId", "Api/{controller}/{action}/{id}", new { id = RouteParameter.Optional }, new { id = @"\d+" });
routes.MapHttpRoute("DefaultApiGet", "Api/{controller}", new { action = "Get" }, new { httpMethod = new HttpMethodConstraint("Get") });
routes.MapHttpRoute("DefaultApiPost", "Api/{controller}", new { action = "Post" }, new { httpMethod = new HttpMethodConstraint("Post") });
}
但是在调用方法时我仍然得到404:
Request GET /api/people/GetpeopleInFamily/101 HTTP/1.1
{“消息”:“找不到与请求URI匹配的HTTP资源'http:// localhost:17438 / api / people / GetpeopleInFamily / 101' . ”,“MessageDetail”:“控制器上未找到任何操作”与请求匹配的人 . “}
我需要做些什么才能让它发挥作用?同样,这是添加返回更复杂数据集的自定义方法的最佳做法吗?
2 回答
familyId
未映射到路径中 . 因此,您可以创建一个新的Mapping,它将familyId添加到id映射或将GetPeopleInFamily
的参数重写为id
.改写:
创建新路由:创建新路由时,请确保使用
id
删除映射,否则将无法正常工作 .您需要配置Web API路由以接受familyId参数 .