Attribute based webapi2 routing returns 404 for some methods

Check that you configure your HttpConfiguration via the MapHttpAttributeRoutes method before any ASP.NET MVC routing registration.

In accordance to Microsoft's CodePlex entry on Attribute Routing in MVC and Web API the Design section states:

In most cases, MapHttpAttributeRoutes or MapMvcAttributeRoutes will be called first so that attribute routes are registered before the global routes (and therefore get a chance to supersede global routes). Requests to attribute routed controllers would also be filtered to only those that originated from an attribute route.

Therefore, within the Global.asax (or where registering routes) it is appropriate to call:

GlobalConfiguration.Configure(c => c.MapHttpAttributeRoutes()); // http routes
RouteTable.Routes.MapRoute(...); // mvc routes

In my case it was a stupid mistake, I am posting this so people behind me making the same mistake may read this before they check everything else at quantum level.

My mistake was, my controller's name did not end with the word Controller.

Happy new year