c# - 在 MVC 5 中的 Action Filters 中调用异步方法

标签 c# asp.net-mvc asp.net-mvc-5 async-await

我正在编写一个使用 ActionFilterAttribute 的 Action 过滤器(继承自 HttpClient)将数据发布到 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
    }
}

Async action filter in MVC 4 的公认答案说这在 MVC 4 中是不可能的。

这在 MVC 5 中仍然成立吗?如果是的话,在不阻塞线程的情况下调用此异步方法的最佳方式是什么?

最佳答案

是的,这仍然是真的。 Web API 2 支持异步操作过滤器,但 MVC 5 仍然不支持。不久前我个人对此感到沮丧。目前,您需要在 Action 过滤器中将异步方法作为同步方法运行,或者在每个需要它的 Action 中重复您在 Action 过滤器中拥有的异步代码,然后您可以 异步运行。

关于c# - 在 MVC 5 中的 Action Filters 中调用异步方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25246030/

相关文章:

asp.net-mvc - Azure 云服务不记录 ASP.NET 错误

javascript - highcharts 中没有显示 y 轴的滚动条?

entity-framework - 如何在View中获取IdentityUser角色的名称?

ASP.NET 数据缓存与 Azure Redis 缓存?

C# 将图像作为 blob 保存到 MySql 数据库

c# - 防止没有协议(protocol)的URL变成相对URL

c# - 如何在 EF 查询中执行日期比较?

asp.net-mvc - Azure ASP.NET 预热和部署槽

c# - 将 mp4 转换为 mp3

c# - 可空对象必须有一个值#2