我正在尝试将一些方法转换为异步,并在我正在修改的控制器中使用一个简单示例开始:
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。搜索表明这可能是组件版本不正确的问题,但检查项目文件和Process视图表明在运行时引用和加载了正确的类型。
有没有人对此有任何调试技巧?
感谢。
答案 0 :(得分:5)
在剥离90%的代码以使其正常工作并逐渐将其重新添加到失败之后,结果发现正在使用自定义的ControllerActionInvoker。修复是将自定义调用程序更改为从AsyncControllerActionInvoker继承并覆盖BeginInvokeAction而不是InvokeAction。 AsyncControllerActionInvoker可以处理异步和同步方法。