Ceci est certainement un changement de Beta à RC. Dans l'exemple fourni dans la question, vous devez maintenant décorer votre action avec [HttpGet] ou [AcceptVerbs("GET")].
Cela pose un problème si vous souhaitez mélanger les actions basées sur des verbes (c'est-à-dire "GetSomething", "PostSomething") avec des actions non basées sur des verbes. Si vous essayez d'utiliser les attributs ci-dessus, cela causera un conflit avec toute action basée sur un verbe dans votre contrôleur. Une façon de contourner cela serait de définir des routes séparées pour chaque verbe, et définir l'action par défaut sur le nom du verbe. Cette approche peut être utilisée pour définir des ressources enfants dans votre API. Par exemple, le code suivant prend en charge : "/resource/id/children" où id et children sont optionnels.
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") }
);
Hopefully future versions of Web API will have better support for this scenario. Il y a actuellement un problème signalé sur le projet codeplex aspnetwebstack, http://aspnetwebstack.codeplex.com/workitem/184. Si c'est quelque chose que vous aimeriez voir, veuillez voter sur la question.