[英]Wrapped ASP.NET MVC Controller does not support Async action method
我正在开发一个ASP.Net MVC 4项目,该项目中的所有Controllers都包装到一个自定义控制器中,如下所示:
public abstract class BaseController : Controller{
protected override void OnActionExecuted(ActionExecutedContext filterContext){
}
protected override IActionInvoker CreateActionInvoker(){
return new WebControllerActionInvoker();
}
}
一切都好。 但是,当我想在异步操作方法中使用异步修饰符时,操作方法无法正常工作,并在视图中返回此消息
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);
}
您应该从AsyncController
派生使其工作:
与其从Controller派生控制器,不如从AsyncController派生它。 从AsyncController派生的控制器使ASP.NET能够处理异步请求,并且它们仍可以为同步操作方法提供服务。
默认情况下, Controller
无法处理异步操作。
编辑:
由于上述方法适用于.NET 4,并且似乎已弃用,因此您可以在此处找到另一种方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.