我需要在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 / requests的MessageHandler内。