次の URL にアクセスしようとしています。
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 は機能します。これは一致があったことを意味します。
質問: 私の理解では、ルーティングが最初のルートと一致しない場合、2 番目のルートにフォールバックします。間違ったルートにマッピングされているかどうかは理解できますが、どのように注文しても「一致が見つかりませんでした」などのエラーにはなりません。
私は何かを逃したことがありますか?