【发布时间】:2012-07-29 04:06:17
【问题描述】:
当试图为以下问题寻找解决方案时:
MVC Web Api Route with default action not working
大多数情况下,我都会遇到“找到多个操作”的问题。如果路由机制发现多个动作与路由匹配,则抛出异常 500。
例如ValuesController中有两个动作:
[HttpGet]
public IEnumerable<String> Active()
{
var result = new List<string> { "active1", "active2" };
return result;
}
public IEnumerable<string> Get()
{
return new[] { "value1", "value2" };
}
与默认路由匹配:
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
与
GET: /api/values
找到多个操作会出错。
我的问题:如何通过选择指定的操作绕过“找到多个操作”的异常(选择第一个匹配的操作也可以)。
更新 1: 更新来自 tugberk 的评论,感谢指出。
更新 2: 从 Mike 的评论中更新,似乎问题不太正确,所以我改变了提问的方式,没有提及路由约束。
谢谢
【问题讨论】:
-
嗯,除非您在其上应用
HttpGet属性,否则这些路由应该不可能匹配 Active 操作。 -
我已更新问题以添加 HttpGet 属性
标签: asp.net-mvc rest asp.net-mvc-routing asp.net-mvc-4 asp.net-web-api