dav*_*v_i 11 c# asp.net-mvc async-await asp.net-mvc-5
我正在编写一个Action Filter(继承自ActionFilterAttribute),它用于HttpClient将数据POST到方法中的外部服务器OnResultExecuted.HttpClient有一个PostAsync返回等待的方法Task<HttpResponseMessage>.
public override void OnResultExecuted(ResultExecutedContext filterContext)
{
using (var client = new HttpClient())
{
var task = client.PostAsync(GetUri(), GetContent());
var result = task.Result; // blocking
}
}
Run Code Online (Sandbox Code Playgroud)
MVC 4中对Async动作过滤器的接受答案表明它在MVC 4中是不可能的.
这在MVC 5中是否仍然如此,如果是这样,在不阻塞线程的情况下调用此异步方法的最佳方法是什么?
Chr*_*att 10
是的,它仍然是真的.Web API 2支持异步操作过滤器,但MVC 5仍然不支持.不久前我对此感到非常沮丧.目前,您需要在操作过滤器内运行异步方法作为同步,或者重复您在每个需要它的操作中的操作过滤器中的异步代码,然后您可以将其作为异步运行.