MVC ルートに問題があります。
次の URL にアクセスしようとしています... " http://localhost/api/Countries "
次のルートを次の順序で定義しました...
RouteTable.Routes.MapHttpRoute(
name: "Continents",
routeTemplate: "api/countries/Continents",
defaults: new { controller = "countries", Action="Continents" }
);
RouteTable.Routes.MapHttpRoute(
name: "CountryRegions",
routeTemplate: "api/countries/Regions",
defaults: new { controller = "countries", Action = "CountryRegions" }
);
RouteTable.Routes.MapHttpRoute(
name: "CountryByCodeApi",
routeTemplate: "api/{controller}/{countryCode}",
defaults: new { controller="countries", countryCode = System.Web.Http.RouteParameter.Optional }
);
目的の URL に移動するたびに、 「リクエストに一致する複数のアクションが見つかりました」というエラーが表示されます。routeTemplate プロパティの 3 番目のセグメントがオプションである場合、これは理にかなっていますが、それを中かっこで囲まないことで、ターゲット URL で必須のセグメントになったと理解していました。明らかに「http://localhost/api/countries」には「Continents」または「Regions」が含まれていないため、なぜそれらがリクエストに一致すると識別されるのでしょうか。
知ってるよ。これらのルートは単純なもののように見えますが、実際にやってみると RegEx のように不可解です !!!
何かご意見は?