ControllerBase.Execute(RequestContext)在MVC5中是否已过时?

时间:2016-05-02 21:16:39

标签: asp.net-mvc-3 asp.net-mvc-5

我正在将网站从MVC3升级到MVC5。我只是使用NuGet来安装Microsoft.AspNet.Mvc版本5.2.3,一切似乎都运行正常。但经过仔细检查,我发现这段代码不再运行了:

public abstract class BaseController : System.Web.Mvc.Controller
{
    protected override void Execute(RequestContext requestContext)
    {
        LogRequest();
        UpdateUserSession();
        base.Execute(requestContext);
    }
}

我发现this lifecycle documentation(从here链接)似乎确认MVC不再调用Execute

然而,this documentation不清楚,说

  

此方法是Execute的实现。您通常不必重写此方法。改为覆盖Initialize或ExecuteCore。

我希望它说“从版本5(或者可能是4)开始,MVC框架不再调用此方法。”也许甚至标记它[Obsolete],尽管可能有充分的理由不这样做。

此外,我的测试显示ExecuteCore也没有被调用!看起来OnActionExecuting是移动Execute以前代码的最佳位置,这是正确的吗?

1 个答案:

答案 0 :(得分:0)

也许对任何人都有帮助

旧版本:

errorManagerController.Execute(requestContext);

新版本:

Response.RedirectToRoute(routeData.Values);