これは確かにベータ版からRCへの変更です。質問の例では、アクションを[HttpGet]または[AcceptVerbs( "GET")]で装飾する必要があります。
これは、動詞ベースのアクション(「GetSomething」、「PostSomething」など)を非動詞ベースのアクションと混在させたい場合に問題を引き起こします。上記の属性を使用しようとすると、コントローラーの動詞ベースのアクションと競合します。動詞ごとに個別のルートを定義し、デフォルトのアクションを動詞の名前に設定することで、問題を回避する1つの方法です。このアプローチは、APIで子リソースを定義するために使用できます。たとえば、次のコードは「/ resource / id / children」をサポートしています。ここで、idと子はオプションです。
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に記録されている問題があります 。これがあなたが見たいものであるならば、問題に投票してください。