我在Web api控制器中添加了一个方法:
public String GetpeopleInFamily(string familyId)
我从这个问题中获取了一些示例:ASP.NET Web API中的自定义方法名称
我根据上面的内容更新了RouteConfig.cs文件:public static void RegisterRoutes(RouteCollection route){route.IgnoreRoute(“ {resource} .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:
请求GET / api / people / GetpeopleInFamily / 101 HTTP / 1.1
{“ Message”:“未找到与请求URI相匹配的HTTP资源' http:// localhost:17438 / api / people / GetpeopleInFamily / 101 '。”,“ MessageDetail”:“在控制器'people上未找到任何操作'符合要求。“}
我需要做些什么才能使它正常工作?同样,这是添加返回更复杂数据集的自定义方法的最佳实践吗?
该familyId
不会在路线映射。因此,您可以创建一个新的Mapping,从而将familyId添加到ID映射中,或重写GetPeopleInFamily
to的参数id
。
改写:
public string GetPeopleInFamily(string id)
创建新路线:创建新路线时,请确保删除带有的映射,id
否则它将无法正常工作。
routes.MapHttpRoute("DefaultApiWithActionAndFamilyId", "Api/{controller}/{action}/{familyId}", new { familyId = RouteParameter.Optional }, new { familyId = @"\d+" });
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句