是否可以为仅使用路由属性的特定控制器添加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操作将被调用。
MapHttpRoute
实现了相同的功能。但是这并不适用于Attribute Routing
。 - Nameless