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?