Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 异步MVC方法返回ContentResult System.Threading.Tasks.Task`1[System.Web.MVC.JsonResult]_C#_Asp.net Mvc_Asp.net Mvc 4_Asynchronous_Asynccontroller - Fatal编程技术网

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

C# 异步MVC方法返回ContentResult System.Threading.Tasks.Task`1[System.Web.MVC.JsonResult],c#,asp.net-mvc,asp.net-mvc-4,asynchronous,asynccontroller,C#,Asp.net Mvc,Asp.net Mvc 4,Asynchronous,Asynccontroller,我正在尝试将一些方法转换为async,并从我正在修改的控制器中的一个简单示例开始: public class MyAPIController : AsyncController { public async Task<JsonResult> List() { return Json(123456, JsonRequestBehavior.AllowGet); } ... } 公共类MyApicController:AsyncCont

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

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

    ...
}
公共类MyApicController:AsyncController
{
公共异步任务列表()
{
返回Json(123456,JsonRequestBehavior.AllowGet);
}
...
}
当我测试该方法而不是Json结果时,我会得到字符串值“System.Threading.Tasks.Task`1[System.Web.Mvc.JsonResult]”,我已经通过Fiddler和浏览验证了该值

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

有人对此有什么调试技巧吗


谢谢。

在剥离90%的代码以使其正常工作,并逐渐将其重新添加到中,直到失败,结果证明正在使用自定义ControllerActionInvoker。修复方法是将自定义调用程序更改为从AsyncControllerActionInvoker继承,并重写BeginInvokeAction而不是InvokeAction。AsyncControllerActionInvoker可以处理异步和同步方法

显示调用
列表
方法的代码。还可以看到我正在做的是浏览url和\或使用Fiddler编写GET请求,我有一个测试项目,在这个项目中,这种方法可以正常工作。据我所知,MVC async仅在服务器上是异步的,因此不需要在客户端执行任何等待操作,因为它需要restful API。我通常在客户端调用ajax后返回Json。我不需要使用async,我返回的是ActionResult,而不是您所拥有的(任务)。看看这是否有帮助代码片段是我能得到的最简单的形式,并且仍然可以演示这个问题。List方法需要并行执行一些http web请求,要求控制器方法是异步的。我知道这应该行得通,因为我有一个更简单的测试项目,它返回正确的JSON结果。