服务器判断哪个会话 Session 过期

时间:2021-01-24 18:20:11
每次打开一个浏览器浏览某某网站,都会分配Session

每个Session 都有自己的SessionID

Session 过期 会触发Session_End事件

在这个事件中服务器怎么判断哪个会话 Session 过期

17 个解决方案

#1


up

#2


Session[seeionName] == null

#3


Session.SessionID 能取到唯一的SessionID啊,就知道是哪个Session

#4


Session[seeionName] 每个浏览器得到的值不一样的

对于1浏览器 Session["UserID"] = "001"
对于2浏览器 Session["UserID"] = "002"
对于3浏览器 Session["UserID"] = "003"

如果有一个过期,怎么知道是哪个过期。

#5


过期之后,在Session_End事件里 
用 HttpSessionState 类型转换会报异常

#6


O

#7


过期跟哪个浏览器没关系把。
Session_End是写在服务器端的,过期以后,当前应用的所有页都过期

#8


不用判断Session是否过期,系统会自动判断,一般默认20分钟。
过期时间可以自己设置,如Session.Timeout=1 //设session有效为一分钟

#9


你想做什么?是否想session过期了用户就不可浏览网页?不用管他是哪个用户,哪个浏览器啊!
在page_load里加 
if Session[userid] == null
转提示页面.

#10


他有时间限制,过期就是时间到了,楼上的办法不错!

#11


Session.SessionID 可以获取当前 Session 的标识符,

但,不能通过此 ID 去获取特定的 Session 对象,进而获取 Session里面的值,除非 HACK

你应该将你预期实现的效果,仅仅与次 SessionID 关联

并且,只有 InPoc 模型的 Session 才会有 Session_End 事件发生

#12


Global.asax 这个文件的Session_End事件里写
VS2005 Global.asax 这个文件叫全局应用程序类

#13


右键你的项目==添加新项==全局应用程序类
--------------接分---------------------

#14


private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
Response.Write(Session.SessionID + "<br/>");
Session["USER"] = DateTime.Now;
Response.Write(Session["USER"].ToString() + "<br/>");
}
大家可以试一试上面的代码
你用3个浏览器打开会出现3个不同的结果。
那么这3个会话,可能会其中的一个过期,我想捕获到底是哪个会话过期。

#15


Global.asax 的 Session_End

有人也在HttpModel里的实现过

#16


mark

#17


Global.asax 的 Session_End
有人也在HttpModel里的实现过

具体点

#1


up

#2


Session[seeionName] == null

#3


Session.SessionID 能取到唯一的SessionID啊,就知道是哪个Session

#4


Session[seeionName] 每个浏览器得到的值不一样的

对于1浏览器 Session["UserID"] = "001"
对于2浏览器 Session["UserID"] = "002"
对于3浏览器 Session["UserID"] = "003"

如果有一个过期,怎么知道是哪个过期。

#5


过期之后,在Session_End事件里 
用 HttpSessionState 类型转换会报异常

#6


O

#7


过期跟哪个浏览器没关系把。
Session_End是写在服务器端的,过期以后,当前应用的所有页都过期

#8


不用判断Session是否过期,系统会自动判断,一般默认20分钟。
过期时间可以自己设置,如Session.Timeout=1 //设session有效为一分钟

#9


你想做什么?是否想session过期了用户就不可浏览网页?不用管他是哪个用户,哪个浏览器啊!
在page_load里加 
if Session[userid] == null
转提示页面.

#10


他有时间限制,过期就是时间到了,楼上的办法不错!

#11


Session.SessionID 可以获取当前 Session 的标识符,

但,不能通过此 ID 去获取特定的 Session 对象,进而获取 Session里面的值,除非 HACK

你应该将你预期实现的效果,仅仅与次 SessionID 关联

并且,只有 InPoc 模型的 Session 才会有 Session_End 事件发生

#12


Global.asax 这个文件的Session_End事件里写
VS2005 Global.asax 这个文件叫全局应用程序类

#13


右键你的项目==添加新项==全局应用程序类
--------------接分---------------------

#14


private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
Response.Write(Session.SessionID + "<br/>");
Session["USER"] = DateTime.Now;
Response.Write(Session["USER"].ToString() + "<br/>");
}
大家可以试一试上面的代码
你用3个浏览器打开会出现3个不同的结果。
那么这3个会话,可能会其中的一个过期,我想捕获到底是哪个会话过期。

#15


Global.asax 的 Session_End

有人也在HttpModel里的实现过

#16


mark

#17


Global.asax 的 Session_End
有人也在HttpModel里的实现过

具体点