0

I have requirement to specify MessageHandler in webapi.config file for specific controllers only.

So, I have code in webapiconfig.cs file as follows.

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....
    }
}

I want that all requests like http://hostname/api/Reports/GetSomeList to pass through the MessageHandler i.e. api written in ReportController.cs file and all other skip this MessageHandler.

My issue is, control is not going inside the MessageHandler for /api/Reports/ requests.

ghetal
  • 403
  • 2
  • 11
  • 30

0 Answers0