2

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

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

    ...
}

当我测试方法而不是 Json 结果时,我得到了字符串值“System.Threading.Tasks.Task`1[System.Web.Mvc.JsonResult]”,我已经使用 Fiddler 和浏览进行了验证。

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

有没有人对此有任何调试提示?

谢谢。

4

1 回答 1

7

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

于 2013-11-12T13:24:28.030 回答