Применение обработчика сообщений к определенному контроллеру webapi
У меня есть требование указать MessageHandler в файле webapi.config только для определенных контроллеров.
Итак, у меня есть код в файле webapiconfig.cs следующим образом.
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
config.EnableCors();
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "CustomerReportHttpRoute",
routeTemplate: "api/Reports/{id}",
defaults: new { id = RouteParameter.Optional },
constraints: null,
handler: new MessageHandler()
);
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
public class MessageHandler : DelegatingHandler
{
protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
....some logic fo authorization....
}
}
Я хочу, чтобы все запросы, такие как http://hostname/api/Reports/GetSomeList, проходили через MessageHandler, т.е. api, записанный в файле ReportController.cs, и все остальные пропускали этот MessageHandler.
Моя проблема заключается в том, что контроль не идет внутри MessageHandler для / api / Reports / запросы.