我正在开发ASP.Net MVC 4项目。此项目中的所有控制器都包含在这样的自定义控制器中:
public abstract class BaseController : Controller{
protected override void OnActionExecuted(ActionExecutedContext filterContext){
}
protected override IActionInvoker CreateActionInvoker(){
return new WebControllerActionInvoker();
}
}
一切都好。但是当我想在异步操作方法中使用async修饰符时,action方法无法正常工作并返回此消息 在视野中
System.Threading.Tasks.Task`1 [System.Web.Mvc.ActionResult]
现在我该怎么做才能解决这个问题?
编辑:操作方法示例
public async Task<ActionResult> Details(string id) {
var user = await userService.FindByIdAsync(id);
return View(user);
}
答案 0 :(得分:1)
你应该从AsyncController
派生出来让它发挥作用:
默认情况下,不是从Controller派生控制器,而是从中派生出来 AsyncController。从AsyncController派生的控制器启用 ASP.NET处理异步请求,它们仍然可以服务 同步行动方法。
Controller
无法处理异步操作。
编辑:
由于上述方法适用于.NET 4并且似乎已弃用,因此您可以找到另一种方法here。