簡體   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