I\'m using an AuthorizeAttribute on various controllers which may need to return 403 or 429 (too many requests) based on certain attributes of the request itself. I implemented
How about custom message handlers where you could respond back even before hitting the controller? This happens early in the pipeline.
Edit - pasting relevant info from website
A delegating handler can also skip the inner handler and directly create the response:
public class MessageHandler2 :DelegatingHandler
{
protected override Task SendAsync(
HttpRequestMessage request, CancellationToken cancellationToken)
{
// Create the response.
var response = new HttpResponseMessage(HttpStatusCode.OK)
{
Content = new StringContent("Hello!")
};
// Note: TaskCompletionSource creates a task that does not contain a delegate.
var tsc = new TaskCompletionSource();
tsc.SetResult(response); // Also sets the task state to "RanToCompletion"
return tsc.Task;
}
}
And this is how you register the handler
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.MessageHandlers.Add(new MessageHandler1());
config.MessageHandlers.Add(new MessageHandler2());
// Other code not shown...
}
}
Ref here: http://www.asp.net/web-api/overview/advanced/http-message-handlers
sorry for the bad formatting, this is the best I could do via mobile