背景:
使用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);
}
答案 0 :(得分:1)
HttpContext.Items
仅按要求提供;当您重定向到另一个视图或甚至在当前视图中回发时,它不会保留。因此,您需要使用Session
或其他内容来保留它。