0

特定のコントローラーに対してのみ、webapi.config ファイルで MessageHandler を指定する必要があります。

したがって、次のように 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 、つまり ReportController.cs ファイルに記述された API を通過し、他のすべてがこの MessageHandler をスキップするようにします。

私の問題は、 /api/Reports/ リクエストの MessageHandler 内に制御が入っていないことです。

4

0 に答える 0