Enrutamiento y herencia de atributos de .NET WebAPI

Estoy jugando con la idea de tener un controlador base que use un repositorio genérico para proporcionar los métodos CRUD básicos para mis controladores API para que no tenga que duplicar el mismo código básico en cada nuevo controlador. Pero estoy teniendo problemas con el atributo de enrutamiento que se reconoce cuando está en el controlador base. Para mostrar exactamente cuál es el problema que tengo, he creado un controlador WebAPI realmente simple.

Cuando tengo el método Get en el Controlador principal y se hereda del ApiController directamente, no tengo ningún problema y funciona como se esperaba.

[RoutePrefix("admin/test")]
public class TestController : ApiController
{
    [Route("{id:int:min(1)}")]
    public string Get(int id)
    {
        return "Success";
    }
}

Cuando muevo el método Get a un controlador base, está devolviendo el contenido de la página 404.

[RoutePrefix("admin/test")]
public class TestController : TestBaseController
{

}

public class TestBaseController : ApiController
{
    [Route("{id:int:min(1)}")]
    public string Get(int id)
    {
        return "Success";
    }
}

Algunas notas más interesantes:

Puedo acceder a la acción en GET / Test / 1. Así que lo está encontrando basado en la ruta por defecto todavía.

Cuando intento acceder a POST / admin / test, devuelve el siguiente JSON

{"Mensaje": "No se encontró ningún recurso HTTP que coincida con el URI de la solicitud 'http://test.com/admin/test'. "," MessageDetail ":" No se encontró ningún tipo que coincida con el controlador llamado' admin '. "}

¿Alguien sabe de una manera de hacer que el enrutamiento funcione con atributos de un controlador base?

Respuestas a la pregunta(3)

Su respuesta a la pregunta