【问题标题】:HttpContext.Current.Session["UserID"] not null even Session["UserID"] null after session timeout in asp.netHttpContext.Current.Session["UserID"] not null 即使 Session["UserID"] null 在 asp.net 中的会话超时后
【发布时间】:2015-06-22 15:44:45
【问题描述】:

我在页面加载时设置了Session["UserID"]。喜欢

if(!IsPostBack) {
   Session["UserID"] = 1222;
}

我正在使用 HttpContext.Current.Session["UserID"] 来验证用户会话是否超时。

我的网络配置设置是这样的,

<sessionState mode="InProc" cookieless="false" timeout="20"/> 

20 分钟后 Session["UserID"] 对象为空,但同时,如果我验证 HttpContext.Current.Session["UserID"] 它会显示用户 ID。

请告诉我HttpContext.Current.Session["UserID"] 在会话超时后如何为空

【问题讨论】:

    标签: c# asp.net session session-state session-timeout


    【解决方案1】:

    请检查您是否在自定义控制器基础或派生类中设置了会话值。

    例如,如果您在 ActionFilterAttribute 检查会话过期重定向的会话值。请确保您的控制器继承的调用不存在会话集方法。

    因为在调用控制器动作方法之前,控制器构造函数会被调用。

    我相信这会对某人有所帮助

    【讨论】:

      【解决方案2】:

      System.Web.UI.PageSystem.Web.UI.UserControl 类的Session 属性是对HttpContext.Current.Session 的引用。

      你指的是session["UserId"](注意小写's')——但你没有说这是指什么。大概它是在您自己的代码中定义的,并且没有引用HttpContext.Current.Session

      【讨论】:

      • 我也遇到过这个问题。即使 System.Web.HttpSessionStateBase Controller.Session 为空,HttpContext.Current.Session 也不为空。这些类型的会话有什么不同
      • @dush88c - Controller.Session 被初始化为控制器初始化的一部分。如果为空,则控制器没有正确初始化:可能是你自己创建了控制器的实例。
      • 不,不是这样,在会话超时后,Controller.Session 是清晰的。但 HttpContext.Current.Session 不清楚。
      • @dush88c - 我建议你发布一个问题,最好是一个最小的、完整的、可验证的例子:stackoverflow.com/help/mcve
      • 好的,我明白了。发生的事情是在我的自定义 ControllerBase 类超时后设置会话值。感谢您花时间帮助我@Joe
      猜你喜欢
      • 2016-09-04
      • 2016-01-25
      • 2020-01-23
      • 2020-06-26
      • 1970-01-01
      • 2016-09-20
      • 1970-01-01
      • 2013-02-27
      • 1970-01-01
      相关资源
      最近更新 更多