web api - 消息处理程序属性路由

Posted

技术标签:

【中文标题】web api - 消息处理程序属性路由【英文标题】:web api - message handler attribute routing 【发布时间】:2014-12-26 18:47:06 【问题描述】:

有谁知道消息处理程序是否可以与 Web API 2.x 中的属性路由同时工作?我有一个自定义消息处理程序可以使用常规路由工作,然后在添加属性路由后,它停止工作。我不确定它是否不受支持,或者我是否配置错误。非常感谢任何帮助。

1) 属性路由之前

--- WebApiConfig.cs  code snippet (simplified)----


        config.Routes.MapHttpRoute(
            name:"DefaultApi",
            routeTemplate: "api/controller",
            defaults: null,
            constraints: null,
            handler: my-message-handler-object
        );


--- MyController.cs  code snippet (simplified)----

    public class MyController : ApiController
    

        [HttpGet]
        public IHttpActionResult CheckInServices(...)
         
           ...
         
    

2) 属性路由后

--- WebApiConfig.cs  code snippet (simplified)----

    public static void Register(HttpConfiguration config)
    
        // Web API routes
        config.MapHttpAttributeRoutes();

        config.Routes.MapHttpRoute(
            name:"DefaultApi",
            routeTemplate:"api/vendor",  
            defaults: new  controller = "Users" ,
            constraints: null,
            handler: my-message-handler-object
        );
   


--- MyController.cs  code snippet (simplified)----

    [RoutePrefix("api/vendor/vendorID:long/service")]
    public class MyController : ApiController
    
         [HttpPost]
         [Route("serviceID:long")]
         public IHttpActionResult CheckInServices(...)
         
           ...
         
    

谢谢,

科迪

【问题讨论】:

【参考方案1】:

全局消息处理程序将起作用 - 只需在启动时进行设置。

public static class WebApiConfig

    public static void Register(HttpConfiguration config)
    
        config.MessageHandlers.Add(new YourAuthenticationHandler());
    

我不确定每个路由消息处理程序是否与属性路由一起使用。

【讨论】:

以上是关于web api - 消息处理程序属性路由的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Web API 消息处理程序中提取自定义标头值?

ASP.NET Core Web API - JWT 消息处理程序 - 没有注册类型错误

Web API 源码剖析之默认配置(HttpConfiguration)

ASP.NET 4.5 Web API 2.0,JWT 消息处理程序将状态 0 返回到 Angular 7 HTTP 拦截器

访问Web API中的消息处理程序和操作筛选器中的实际请求

细说Asp.Net Web API消息处理管道