我对 WebApi 很陌生,不了解参数映射。我有一个带有 2 个参数的 HttpGet 方法的控制器。在 WebApiConfig 映射中定义如下
config.Routes.MapHttpRoute(
name: "MyActionApi",
routeTemplate: "api/{controller}/{action}/{p},{q}");
这似乎工作正常。
以此类推,我添加了另一个具有 3 个参数 HttpGet 方法的控制器 (DetailsController)。
我已经添加
config.Routes.MapHttpRoute(
name: "MyActionApi2",
routeTemplate: "api/{controller}/{action}/{p},{q},{r}");
但是导航到
http://mysite/api/Details/CrossReport/12,14,Peter
给出 404 错误并说
在与请求匹配的控制器“详细信息”上未找到任何操作。
但是像这样导航
http://mysite/api/Details/FilterByDate/12,14?q=10
给出正确的结果。
这是为什么?我想像第一种情况一样用逗号分隔。为什么它在第一种情况下有效,而在第二种情况下无效?
工作控制器的方法:
public IEnumerable<Order> FilterByDate(DateTime dateStart, DateTime dateEnd).
不工作:
public IEnumerable<Detail> FilterByDate(DateTime dateStart, DateTime dateEnd, int maxCount)
两者都有 HttpGet 属性。