Lors de l'utilisation du routage basé sur les conventions, je peux utiliser DelegatingHandler pour créer un encapsuleur de réponse en remplaçant la méthode SendAsync.Comment créer un wrapper de réponse pour le routage d'attributs?
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
);
Toutefois, cette méthode ne fonctionne pas pour les méthodes qui dépendent du routage d'attributs. Dans mon cas, le routage basé sur les conventions ne fonctionnera pas pour tous les scénarios et routeHandler ne s'applique pas aux routes basées sur les attributs. Comment puis-je appliquer un wrapper de réponse à toutes les réponses de route basées sur des attributs?
Le routage basé sur les conventions ne fonctionnera pas pour tous les scénarios? Comment cela est-il possible que le routage d'attribut soit un sous-ensemble de la fonctionnalité de routage basée sur les conventions? – NightOwl888
Dans votre cas, routeHandler n'est que l'encapsuleur d'action du contrôleur. Pourquoi n'utilisez-vous pas ActionFilter qui fait la même chose, mais beaucoup plus simple et fonctionne avec n'importe quel mécanisme de route. –
@ NightOwl888 UsersController GET opérations api/utilisateurs api/users/{userId} api/users/{userId}/inscriptions api/users/{userId}/inscriptions/{enrollmentId} Peut-être que je suis juste être ignorant ... est-il un moyen d'atteindre le routage basé sur les conventions ci-dessus? Cela ne me dérange pas de créer plusieurs conventions, mais s'il devait y avoir une route conventionnelle pour chaque contrôleur, il semblerait que le routage d'attribut soit préféré. – Zoop