У меня есть фильтр действий, который при использовании в определенных конкретных условиях должен выполнять вызов веб-службы, чтобы убедиться, что текущее состояние действительно. Первоначально это казалось идеальным кандидатом для async/await, но я столкнулся с проблемой:
Предположим, что запрос:/Test/FilteredAction
- MyCustomActionFilter начинает выполнение
- Достигнуто первое выражение "ожидание"
- TestController.FilteredAction начинает выполнение
- MyCustomActionFilter возобновляет выполнение
Традиционно я ожидал, что фильтр действий возобновит выполнение, а затем завершит работу до запуска действия контроллера, но этого не произойдет.
Теперь я предполагаю, что это потому, что я использую:
public class MyCustomActionFilter : ActionFilterAttribute
{
public override **async** void OnActionExecuting(FilterContext context)
{
var foo = await WebServiceCall();
}
}
Итак, я думаю, что мой вопрос: есть ли класс фильтров действий с поддержкой асинхронного программирования, встроенный в MVC 4, или мне нужно просто блокировать вызовы здесь?