我正在尝试访问以下网址:
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 将起作用。这意味着有一场比赛。
问:我对路由的理解是,如果不匹配第一个路由,就会回退到第二个路由。我可以理解它是否映射到错误的路线,但无论我如何订购它们,它都不应该是指示“未找到匹配”之类的错误。
我错过了什么吗?