Ciu*_*rin 8 asp.net asp.net-web-api routeattribute asp.net-web-api2 message-handlers
是否可以仅为使用路由属性的特定控制器添加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()
);
Run Code Online (Sandbox Code Playgroud)
如果我在config.MapHttpAttributeRoutes();执行myMessageHandler 之前放置此代码,但是我收到此消息:
控制器'myapicontroller'上没有找到与请求匹配的操作
如果我config.MapHttpAttributeRoutes();先放,myMessageHandler永远不会被执行,但调用myapicontroller中的my动作.
Aja*_*hya -1
MS 文档中的这篇文章解释了相同的内容。最后,他们提供了一种拥有特定于控制器的处理程序的方法。但这只是传统的路由。我不知道这是否对你有帮助。
config.Routes.MapHttpRoute(
name: "MyCustomHandlerRoute",
routeTemplate: "api/MyController/{id}",
defaults: new { controller = "MyController", id = RouteParameter.Optional },
constraints: null,
handler: HttpClientFactory.CreatePipeline(new HttpControllerDispatcher(config), new MyCustomDelegatingMessageHandlerA());
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
944 次 |
| 最近记录: |