0
使用基于约定的路由时,我可以通过重写SendAsync方法来使用DelegatingHandler来创建响应包装。如何为属性路由创建响应包装?
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
);
但是,这种方法不适用于依赖于属性路由的方法。在我的情况下,基于约定的路由不适用于所有场景,并且routeHandler不适用于基于属性的路由。
如何将响应包装应用于所有基于属性的路由响应?
基于约定的路由不适用于所有情况?属性路由是基于约定的路由功能的一个子集,这怎么可能? – NightOwl888
在你的情况,routeHandler只是控制器动作包装。你为什么不使用ActionFilter,但它更简单,并且适用于任何路由机制。 –
@ NightOwl888 UsersController GET操作 API /用户 API /用户/ {用户id} API /用户/ {用户id} /入学 API /用户/ {用户id} /入学/ {enrollmentId} 也许我只是无知...有没有办法实现上述使用基于约定的路由?我不介意创建多个约定,但如果需要为每个控制器构建一个基于约定的路由,那么似乎属性路由将是首选。 – Zoop