我正在将网站从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
以前代码的最佳位置,这是正确的吗?
答案 0 :(得分:0)
也许对任何人都有帮助
旧版本:
errorManagerController.Execute(requestContext);
新版本:
Response.RedirectToRoute(routeData.Values);