检测MVC 4中的同步和异步控制器操作

时间:2015-08-18 19:01:09

标签: c# asp.net-mvc-3 asp.net-mvc-4 controller base-class

我们最近遇到了BaseController中ExecuteCore()不再被调用的问题。曾在MVC 3中工作但不在MVC 4中工作

所以,我将属性protected override bool DisableAsyncSupport添加到BaseController,如下所示:

protected override bool DisableAsyncSupport
{
    get { return true; }
}

现在明显的问题是当我们得到异步动作时该怎么办? 如何检测控制器操作是否是同步VS异步?

我需要这样的东西,我想:

protected override bool DisableAsyncSupport
{
    get
    {
        if(actionIsSynchronous)
            return true;
        else
            return false

    }
}

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您可以尝试使用 BeginExecuteCore

,而不是使用 ExecuteCore
protected override IAsyncResult BeginExecuteCore(AsyncCallback callback, object state)
{
    return base.BeginExecuteCore(callback, state);
}

另一种解决方案可能是覆盖初始化方法。

protected override void Initialize(RequestContext requestContext)
{
      //Put your code here
}