是否可以仅为使用路由属性的特定控制器添加 MessageHandler?
如果它不包含某些标头,我想在管道中更早地切断请求。我想提一下:
我无法在 WebApiConfig 中添加其他路由,我们必须使用控制器中的路由属性。
我不想全局添加 MessageHandler 。
它必须是一个 MessageHandler(在管道的早期)。我们有替代方案,但我们正在努力提高效率。
例如,我使用以下 RoutePrefix 装饰了控制器:api/myapicontroller 和一个使用 Route("") 的操作。(我知道这很奇怪,我们正在根据查询字符串选择不同的操作)
然后,我添加了
config.Routes.MapHttpRoute(
name: "CustomRoute",
routeTemplate: "api/myapicontroller/{id}",
defaults: new { id = RouteParameter.Optional },
constraints: null,
handler: new myMessageHandler()
);
如果我在config.MapHttpAttributeRoutes();
执行 myMessageHandler 之前放置此代码,但我收到此消息:
在与请求匹配的控制器“myapicontroller”上未找到任何操作
如果我把config.MapHttpAttributeRoutes();
它放在第一位,那么 myMessageHandler 永远不会被执行,但 myapicontroller 中的 my 操作会被调用。