我正在编写一个Action Filter(继承自ActionFilterAttribute
),它使用HttpClient
在OnResultExecuted
方法中向外部服务器POST数据。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
}
}
MVC 4中无法使用异步操作过滤器是一个已接受的答案。
在MVC 5中是否仍然如此,如果是,则调用此异步方法的最佳方式是什么,以避免阻塞线程?
Task
,否则它仍将同步运行。添加async
并不能像魔术棒一样解决所有问题。 - Chris Pratt