我在使用ListPeople
导航到URL
方法时遇到问题。如果我在localhost:12345/People?peopleId=405&age=24
中输入URL
,它就能正常工作;但是,当我将localhost:12345/People?peopleId=405
传递到URL
时,会返回404
错误。
404错误消息:
"No HTTP resource was found that matches the request URI'http://localhost:12345/People?peopleId=405'."
如何更改ListPeople
控制器的路由,使其超出 BOTH 网址?
控制器
[HttpGet]
[ReturnDescription("List of People")]
[CustomActionName("")]
[Description("List of people for given peopleId and age")]
public ApiResponse<Status, IEnumerable<People>> ListPeople(int peopleId, int? age)
{
return _personProject.ListPeople(peopleId, age);
}
成功的网址
localhost:12345/People?peopleId=405&age=24
网址失败
localhost:12345/People?peopleId=405
答案 0 :(得分:1)
如上所述,您有一个代表网址的方法:
/People?peopleId={0}&age={0}
您必须进行仅接受peopleId
的重载,因为当您自动设置此方法时,方法只能是一条路线的目标。我建议的是做一个简单的过载:
public ApiResponse<Status, IEnumerable<People>> ListPeople(int peopleID)
{
return ListPeople(peopleId, null);
}
答案 1 :(得分:1)
抱歉,我不能写评论。所以我必须写在这里。如果你使用api检查你的WebApiConfig。您必须在此配置中定义参数。
像;
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{peopleid}/{age}",
defaults: new { peopleid = RouteParameter.Optional, age = RouteParameter.Optional }
);
只是一个例子。我想我可以帮到你。