加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

如何为ASP.NET WebAPI 2中使用路由属性的特定控制器添加MessageH

发布时间:2020-12-16 04:30:10 所属栏目:asp.Net 来源:网络整理
导读:是否可以仅为使用路由属性的特定控制器添加MessageHandler? 如果它不包含某些标题,我想在管道中提前删除请求.我想要 提到: 我无法在WebApiConfig中添加其他路由,我们必须使用控制器中的路由属性. 我不想全局添加MessageHandler. 它必须是MessageHandler(在
是否可以仅为使用路由属性的特定控制器添加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正在执行,但我收到此消息:

No action was found on the controller ‘myapicontroller’ that matches
the request

如果我把config.MapHttpAttributeRoutes();首先,myMessageHandler永远不会执行,但调用myapicontroller中的my动作.

解决方法

不幸的是,您无法通过AttributeRouting设置任何处理程序.如果要将处理程序分配给特定路由,则必须仅通过MapHttpRoute注册它.除非您需要在默认值部分中添加控制器名称,例如Ajay Aradhya的答案,并从您的操作中删除Route属性,因为您可以使用Route属性或MapHttpRoute方法注册路径,但不能同时注册两者.

另请注意,您需要创建管道,否则您的处理程序将工作但请求将不会命中控制器操作.
有关详细信息,请参阅类似问题的my answer.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读