我有一个动作过滤器,当在某些特定条件下使用时,它必须执行 Web 服务调用以确保当前状态有效。这最初似乎是 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 中是否有一个异步感知动作过滤器类,或者我应该在这里阻止调用?