让说我有在MVC 4的Web API控制器两种方法:URL参数
public IQueryable<A> Get() {}
而且
public A Get(int id) {}
与以下路线:
routes.MapHttpRoute(
name: "Default",
routeTemplate: "{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
这按预期工作。添加一个参数,如:
public IQueryable<A> Get(int p) {}
public A Get(int id, int p) {}
导致当MVC以下请求返回404的情况:
GET /controller?p=100
或者
GET /controller/1?p=100
与消息“没有行动被发现在与请求匹配的控制器'控制器'上'
我期望URL参数应该通过MVC连接没有问题,但这不是事实。这是一个错误还是我对MVC地图请求行动的误解?
[这里](HTTP不工作://论坛。 asp.net/t/1774984.aspx/2/10)描述了相同的问题,但没有结论是这种行为预期为 – 2012-03-30 13:22:03
PS。由于相同的问题,如果存在多个映射到HTTP动词的方法,则URL中的OData语法将不起作用。 – 2012-03-30 13:26:36
你可以在你的控制器上显示你的实际路线和所有方法和签名吗? – 2012-03-30 13:51:34