0

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

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);
}

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

4

2 回答 2

6

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

于 2009-07-30T20:31:59.900 回答
1

如果您希望 ASP.NET 应用程序中的每个请求都发生某些事情,那么最好将其构建到 IHttpModule 中,而不是将其构建到控制器中。您如何保证您的继任者将正确实施您的控制器?

于 2009-07-30T20:33:39.770 回答