某些操作缺少HttpContext.Items

时间:2012-05-18 13:25:54

标签: asp.net-mvc

背景:

使用Windows身份验证的MVC3 Intranet应用程序。 Windows身份验证完成后,HttpModule会从HR数据库中查找用户的网络ID,并返回用户的员工信息并将其设置为HttpContext.Items。我有一个基本控制器,它通过重写OnActionExecuting来查找此信息并设置ViewBag属性。

我的问题是这个HttpContext.Items["UserInfo"]信息似乎只在主页/索引上可用,而且当我点击Home / About或Home / Help时虽然HomeController继承了BaseController但是不可用。任何人都可以解释为什么会这样吗?

protected override void OnActionExecuting(ActionExecutingContext ctx)
        {          
            if (this.HttpContext.Items["UserInfo"] != null)
            {
                UserInfo User = (UserInfo)this.HttpContext.Items["UserInfo"];
                ViewBag.CurrentUser = User;
            }            

            base.OnActionExecuting(ctx);
        }

1 个答案:

答案 0 :(得分:1)

HttpContext.Items仅按要求提供;当您重定向到另一个视图或甚至在当前视图中回发时,它不会保留。因此,您需要使用Session或其他内容来保留它。