Questo è sicuramente un cambiamento da Beta a RC. Nell'esempio fornito nella domanda, ora devi decorare la tua azione con [HttpGet] o [AcceptVerbs ("GET")].
Ciò causa un problema se si desidera combinare azioni basate su verbi (ad esempio "GetSomething", "PostSomething") con azioni non basate su verbi. Se provi a utilizzare gli attributi di cui sopra, causerà un conflitto con qualsiasi azione basata sui verbi nel tuo controller. Un modo per ottenere arount sarebbe definire percorsi separati per ogni verbo e impostare l'azione predefinita sul nome del verbo. Questo approccio può essere utilizzato per definire le risorse figlio nella tua API. Ad esempio, il codice seguente supporta: "/ resource / id / children" dove id e children sono facoltativi.
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") }
);
Si spera che le versioni future dell'API Web offrano un supporto migliore per questo scenario. Attualmente è stato registrato un problema nel progetto codeplex aspnetwebstack, http://aspnetwebstack.codeplex.com/workitem/184 . Se è qualcosa che vorresti vedere, vota sulla questione.