繁体   English   中英

包装好的ASP.NET MVC控制器不支持异步操作方法

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM