これは確かにベータから RC への変更です。質問で提供されている例では、アクションを [HttpGet] または [AcceptVerbs("GET")] で装飾する必要があります。
これは、動詞ベースのアクション (つまり、"GetSomething"、"PostSomething") と非動詞ベースのアクションを混在させたい場合に問題を引き起こします。上記の属性を使用しようとすると、コントローラー内の動詞ベースのアクションと競合が発生します。これを回避する 1 つの方法は、動詞ごとに個別のルートを定義し、デフォルト アクションを動詞の名前に設定することです。このアプローチは、API で子リソースを定義するために使用できます。たとえば、次のコードは「/resource/id/children」をサポートしています。ここで、id と children はオプションです。
context.Routes.MapHttpRoute(
name: "Api_Get",
routeTemplate: "{controller}/{id}/{action}",
defaults: new { id = RouteParameter.Optional, action = "Get" },
constraints: new { httpMethod = new HttpMethodConstraint("GET") }
);
context.Routes.MapHttpRoute(
name: "Api_Post",
routeTemplate: "{controller}/{id}/{action}",
defaults: new { id = RouteParameter.Optional, action = "Post" },
constraints: new { httpMethod = new HttpMethodConstraint("POST") }
);
Web API の将来のバージョンで、このシナリオに対するサポートが改善されることを願っています。現在、aspnetwebstack codeplex プロジェクト http://aspnetwebstack.codeplex.com/workitem/184に問題が記録されています。これが見たいものである場合は、問題に投票してください。