Bei Verwendung von Convention-based Routing kann ich einen DelegatingHandler verwenden, um einen Antwortwrapper durch Überschreiben der SendAsync-Methode zu erstellen.Wie erstellt man einen Antwort-Wrapper für das Attribut-Routing?
DelegatingHandler[] handler = new DelegatingHandler[] {
new ResponseWrapper()
};
var routeHandler = HttpClientFactory.CreatePipeline(new HttpControllerDispatcher(config), handler);
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}",
defaults: null,
constraints: null,
handler: routeHandler
);
Dieser Ansatz funktioniert jedoch nicht für Methoden, die auf Attribut-Routing angewiesen sind. In meinem Fall funktioniert Convention-basiertes Routing nicht für alle Szenarien und der routeHandler gilt nicht für die attributbasierten Routen.
Wie kann ich einen Antwortwrapper auf alle attributbasierten Routenantworten anwenden?
Convention-based Routing wird nicht für alle Szenarien funktionieren? Wie ist das möglich, dass das Attribut-Routing eine Untermenge der konventionsbasierten Routing-Funktionalität ist? – NightOwl888
In Ihrem Fall ist routeHandler nur Controller-Aktionswrapper. Warum verwenden Sie nicht ActionFilter, der dasselbe tut, aber viel einfacher ist und mit jedem Routenmechanismus funktioniert. –
@ NightOwl888 Userscontroller GET-Operationen api/Benutzer api/users/{userId} api/users/{userId}/Einschreibungen api/users/{userId}/Einschreibungen/{enrollmentId} Vielleicht bin ich nur unwissend ... gibt es eine Möglichkeit, das oben genannte mithilfe von Convention-based Routing zu erreichen? Es macht mir nichts aus, mehrere Konventionen zu erstellen, aber wenn es für jeden Controller eine Convention-basierte Route geben müsste, scheint das Attribut-Routing vorzuziehen. – Zoop