web api — маршрутизация атрибутов обработчика сообщений

Кто-нибудь знает, может ли обработчик сообщений работать одновременно с маршрутизацией атрибутов в 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(...)
         {
           ...
         }
    }

Спасибо,

Коди


person cng    schedule 30.10.2014    source источник


Ответы (1)


Глобальные обработчики сообщений будут работать — просто настройте их при запуске.

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.MessageHandlers.Add(new YourAuthenticationHandler());
    }
}

Я не уверен, работают ли обработчики сообщений для каждого маршрута с маршрутизацией атрибутов.

person Richie    schedule 11.11.2014