【发布时间】:2012-11-23 23:58:06
【问题描述】:
我正在尝试访问以下网址:
http://localhost:2727/api/SiteApi/Get?campaignId=2
这里是配置:
config.Routes.MapHttpRoute(
name: "DetailedApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
动作试图映射到
public class SiteApiController : ApiController
{
...
public IEnumerable<Site> GetByCampaignId(int campaignId)
{
...
return sites;
}
}
目前返回“未找到任何操作”。但是,如果交换路线的顺序,Url 将起作用。这意味着有一场比赛。
问题:我对路由的理解是,如果不匹配第一个路由,就会回退到第二个路由。我可以理解它是否映射到错误的路线,但无论我如何订购它们,它都不应该是指示“未找到匹配”之类的错误。
我错过了什么吗?
【问题讨论】:
标签: asp.net asp.net-mvc asp.net-web-api asp.net-mvc-routing