I have an action filter that when used in certain specific conditions has to perform a web service call to ensure that the current state is valid. This initially seemed like
You cannot have async filters, but you can have async event handlers.
An async event handler can do the heavy async work, write to HttpApplication.HttpContext.Items, and then your sync filter can post-process or verify the results.
You can either register event handlers in Global.asax.cs, or create and register a HTTP module.
(All filters are executed between the PreRequest and PostRequest events.)