Это, безусловно, переход от бета-версии к RC. В примере, приведенном в вопросе, теперь вам нужно украсить свое действие с помощью [HttpGet] или [AcceptVerbs ("GET")].
Это вызывает проблему, если вы хотите смешивать действия на основе глаголов (например, «GetSomething», «PostSomething») с действиями, не основанными на глаголах. Если вы попытаетесь использовать указанные выше атрибуты, это вызовет конфликт с любым действием на основе глагола в вашем контроллере. Один из способов возбудиться, это определить отдельные маршруты для каждого глагола и установить действие по умолчанию для имени глагола. Этот подход можно использовать для определения дочерних ресурсов в вашем 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") }
);
Надеюсь, будущие версии веб-API будут лучше поддерживать этот сценарий. В настоящее время в проекте aspnetwebstack codeplex, http://aspnetwebstack.codeplex.com/workitem/184 зарегистрирована проблема . Если вы хотели бы это увидеть, пожалуйста, проголосуйте по этому вопросу.