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

Asp.net web api web api-消息处理程序属性路由,asp.net-web-api,attributerouting,message-handlers,Asp.net Web Api,Attributerouting,Message Handlers,有人知道消息处理程序是否可以与WebAPI2.x中的属性路由同时工作吗?我得到了一个自定义的消息处理程序来使用传统路由,然后在添加属性路由后,它停止工作。我不确定它是否不受支持,或者我是否有错误的配置。非常感谢您的帮助 1) 属性路由之前 --- WebApiConfig.cs code snippet (simplified)---- config.Routes.MapHttpRoute( name:"DefaultApi",

有人知道消息处理程序是否可以与WebAPI2.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(...)
         {
           ...
         }
    }
--- 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(...)
         {
           ...
         }
    }
2) 后属性路由

--- 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(...)
         {
           ...
         }
    }
--- 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(...)
         {
           ...
         }
    }
谢谢


Cody

全局消息处理程序可以工作-只需在启动时设置它

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.MessageHandlers.Add(new YourAuthenticationHandler());
    }
}
我不确定每路由消息处理程序是否使用属性路由