【问题标题】:Is ControllerBase.Execute(RequestContext) obsolete in MVC5?MVC5 中的 ControllerBase.Execute(RequestContext) 是否已过时?
【发布时间】:2019-09-01 03:33:17
【问题描述】:

我正在将一个网站从 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),这似乎证实了Execute 不再被MVC 调用。

不过this documentation不清楚,说

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

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

此外,我的测试表明ExecuteCore 也没有被调用!看起来OnActionExecuting 是移动曾经存在于Execute 中的代码的最佳位置,对吗?

【问题讨论】:

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


    【解决方案1】:

    也许它对任何人都有帮助:

    旧版本:

    errorManagerController.Execute(requestContext);
    

    新版本:

    Response.RedirectToRoute(routeData.Values);
    

    【讨论】:

      猜你喜欢
      • 2021-07-30
      • 2015-02-26
      • 1970-01-01
      • 1970-01-01
      • 2016-11-09
      • 1970-01-01
      • 2022-01-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多