在ASP.NET MVC中的每个请求上执行代码

Chr*_*ris 0 asp.net-mvc session-state

我有一个控制器,我的所有控制器都继承,我需要为每个控制器请求执行一些代码.我尝试了以下方法:

protected override void Execute(System.Web.Routing.RequestContext requestContext)
{
    if (Session["mallDetected"] == null)
    {
        Session["mallDetected"] = DateTime.Now.Ticks;
        IList<Mall> malls = Mall.FindNearestByIp(Request.UserHostAddress);

        if (malls.Count > 0)
        {
            Session["mall"] = malls[0];
        }
    }

    base.Execute(requestContext);
}
Run Code Online (Sandbox Code Playgroud)

但显然会在执行方法中没有会话状态,直到调用base.Execute()之后,这对我不起作用.有没有可以在ASP.NET MVC中为每个请求执行此会话代码的地方?

kro*_*ugh 5

尝试覆盖OnActionExecuted基本控制器或将功能实现为过滤器.