C#异步MVC方法返回ContentResult System.Threading.Tasks.Task`1 [System.Web.Mvc.JsonResult]

Ros*_*oss 1 c# asp.net-mvc asynchronous asynccontroller asp.net-mvc-4

我正在尝试将一些方法转换为异步,并从我正在修改的控制器中的一个简单示例开始:

public class MyAPIController : AsyncController
{
    public async Task<JsonResult> List()
    {
        return Json(123456, JsonRequestBehavior.AllowGet);
    }

    ...
}
Run Code Online (Sandbox Code Playgroud)

当我测试方法而不是Json结果时,我得到字符串值"System.Threading.Tasks.Task`1 [System.Web.Mvc.JsonResult]",我已经通过Fiddler和浏览验证了这一点.

该项目已手动升级到.NET45.搜索表明这可能是组件版本不正确的问题,但检查项目文件和Process视图表明在运行时引用和加载了正确的类型.

有人有任何调试技巧吗?

谢谢.

Ros*_*oss 5

在剥离了90%的代码以使其正常工作并逐渐将其添加回来直到失败后,结果发现正在使用自定义的ControllerActionInvoker.修复是将自定义调用程序更改为从AsyncControllerActionInvoker继承并覆盖BeginInvokeAction而不是InvokeAction.AsyncControllerActionInvoker可以处理异步和同步方法.