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(...)
{
...
}
}
Спасибо,
Cody
1 ответ
Глобальные обработчики сообщений будут работать - просто установите его при запуске.
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.MessageHandlers.Add(new YourAuthenticationHandler());
}
}
Я не уверен, что по каждому маршруту обработчики сообщений работают с маршрутизацией атрибутов.