I have followed all the documentation I can find, but for some reason this is not working.
I was unable to find a solution from: .NET WebAPI Attribute Routing and inheritance
WebApiConfig
 public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        // Web API configuration and services
        // Web API routes
        //config.MapHttpAttributeRoutes();
        config.MapHttpAttributeRoutes(new CustomDirectRouteProvider());
        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{action}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
    }
}
public class CustomDirectRouteProvider : DefaultDirectRouteProvider
{
    protected override IReadOnlyList<IDirectRouteFactory> GetActionRouteFactories(HttpActionDescriptor actionDescriptor)
    {
        return actionDescriptor.GetCustomAttributes<IDirectRouteFactory>(inherit: true);
    }
}
BaseApiController
public class BaseApiController : ApiController
{
    //Some stuff i require on the base controller
}
CrudApiController
public abstract class CrudController<TDto, TAdd, TEdit, TLookup> : BaseApiController
    where TDto : BaseDto, new()
    where TAdd : BaseModel
    where TEdit : BaseModel
    where TLookup : BaseModel
{
    [HttpGet]
    [Route("{guid:guid}")]
    public virtual TAdd Get(Guid guid)
    {
        TDto dto = DataService.Get<TDto>(guid);
        return dto.Map<TAdd>();
    }
 }
UsersController
[RoutePrefix("api/users")]
public class UsersController : CrudController<UserDto, AddUserModel, EditUserModel, UserGridModel>
{}
packages.config
<package id="Microsoft.AspNet.WebApi" version="5.2.3" targetFramework="net45" />
When I run the following, I always get:
message:
No HTTP resource was found that matches the request URI 'http://localhost/accu/api/users/33ba2e96-06cb-43de-a661-1115039f630f?_=1446037569376'."
messageDetail:
No action was found on the controller 'Users' that matches the name '33ba2e96-06cb-43de-a661-1115039f630f'."
Unless I put,
[Route("{guid:guid}")]
public override AddUserModel Get(Guid guid)
{
    return base.Get(guid);
}
on the UsersController.
 
    