【发布时间】:2013-11-23 06:55:10
【问题描述】:
我正在尝试将一些方法转换为异步,并从我正在修改的控制器中的一个简单示例开始:
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。搜索表明这可能是程序集版本不正确的问题,但检查项目文件和进程视图表明在运行时引用并加载了正确的类型。
有人对此有任何调试技巧吗?
谢谢。
【问题讨论】:
-
显示调用您的
List方法的代码。另见Asynchronous programming with async and await -
我正在做的是浏览 url 和\或使用 Fiddler 来编写一个 GET 请求,我有一个测试项目,其中这种方法工作正常。据我了解,MVC async 仅在服务器上是异步的,因此无需在客户端上进行任何等待,因为它需要一个安静的 API。
-
我通常返回 Json 作为来自客户端的 ajax 调用的结果。我不需要使用异步,我返回的是 ActionResult 而不是你所拥有的 (Task
)。看看有没有帮助 -
代码 sn-p 是我能得到的最简单的形式,并且仍然可以演示该问题。 List 方法需要并行执行一些 http web 请求,要求控制器方法是异步的。我知道这应该可行,因为我有一个更简单的测试项目,它确实返回了正确的 JSON 结果。
标签: c# asp.net-mvc asp.net-mvc-4 asynchronous asynccontroller