Routing und Vererbung von .NET WebAPI-Attributen

Ich spiele mit der Idee, einen Basis-Controller zu haben, der ein generisches Repository verwendet, um die grundlegenden CRUD-Methoden für meine API-Controller bereitzustellen, damit ich nicht in jedem neuen Controller denselben Basis-Code duplizieren muss. Es treten jedoch Probleme mit dem Routing-Attribut auf, das im Basis-Controller erkannt wird. Um genau zu zeigen, was für ein Problem ich habe, habe ich einen wirklich einfachen WebAPI-Controller erstellt.

Wenn ich die Get-Methode im Hauptcontroller habe und sie direkt vom ApiController erbt, habe ich keine Probleme und das funktioniert wie erwartet.

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

Wenn ich die Get-Methode in einen Basiscontroller verschiebe, gibt sie den Inhalt der 404-Seite zurück.

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

}

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

Einige weitere interessante Hinweise:

Ich kann auf die Aktion unter GET / Test / 1 zugreifen. Es wird also immer noch basierend auf der Standardroute gefunden.

Wenn ich versuche, auf POST / admin / test zuzugreifen, wird der folgende JSON zurückgegeben

{"Nachricht": "Es wurde keine HTTP-Ressource gefunden, die mit dem Anforderungs-URI übereinstimmt. 'http://test.com/admin/test'. "," MessageDetail ":" Es wurde kein Typ gefunden, der dem Controller mit dem Namen' admin 'entspricht. "}

Kennt jemand eine Möglichkeit, um das Routing mit Attributen von einem Basiscontroller arbeiten zu lassen?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage