【发布时间】: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