Я думаю, что вам нужен DelegatingHandler для ваших нужд.Каждый запрос сначала проходит через обработчик, где вы можете перехватить его:
public class RequestHandler : DelegatingHandler
{
protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
//Validate the uri and or encode it
Console.WriteLine(request.RequestUri);
//Validate the content
Console.WriteLine(request.Content.ReadAsStringAsync().Result);
// If you like, create a whole new request or cancel it.
return base.SendAsync(request, cancellationToken);
}
}
Вы можете зарегистрировать его глобально:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.MessageHandlers.Add(new RequestHandler());
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
Для получения дополнительной информации см. Плакат веб-API: https://www.asp.net/media/4071077/aspnet-web-api-poster.pdf
Удачного кодирования!