Session过期时间之Session.timeout

来源:互联网 发布:imo即时通讯软件 编辑:程序博客网 时间:2024/05/22 04:45

转自:http://blog.csdn.net/kaosini/article/details/8574410

最近项目中遇到需要对单个Session的过期时间进行特殊处理

很多人是这样理解的

---------------------------------------------------------------------------------------------

protected void SetSession()

{

Session["user"]="UserName";

Session.Timeout = 20;

}

20是分钟

这是对单个的设置,

对整体应该在Web.config里修改

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

---------------------------------------------------------------------------------------------

但是看看Session.Timeout = 20;这句,根本就不像对单个Session进行处理,而像是对所有的Session进行处理,于是动手做了个demo验证一下

Default.aspx

[csharp] view plaincopyprint?
  1. protected void Page_Load(object sender, EventArgs e)  
  2.         {  
  3.             Response.Write("user1:" + Session["user1"]);  
  4.             Response.Write("user2:" + Session["user2"]);  
  5.         }  
User1.aspx

[csharp] view plaincopyprint?
  1. protected void Page_Load(object sender, EventArgs e)  
  2.         {  
  3.             Session["user1"] = "user1";  
  4.             Session.Timeout = 2;  
  5.         }  
user2.aspx

[csharp] view plaincopyprint?
  1. protected void Page_Load(object sender, EventArgs e)  
  2.         {  
  3.             Session["user2"] = "user2";  
  4.             Session.Timeout = 1;  
  5.         }  
编译后,我进行了以下测试:

1.按照以下顺序执行了上面的3个页面:User1.aspx、User2.aspx、Default.aspx,显示“user1:user1user2:user2”。如果按照其它人理解的那样,应该过了一分钟后,显示为:“user1:user1user2:”,实际上的显示结果为:“user1:user2:”,说明后面的Session.Timeout = 1影响到了前面的Session.Timeout = 2。

2.按照以下顺序执行了上面的3个页面:User2.aspx、User1.aspx、Default.aspx,显示“user1:user1user2:user2”。如果按照其它人理解的那样,应该过了一分钟后,显示为:“user1:user1user2:”,实际上的显示结果为:“user1:user1user2:user2”,说明后面的Session.Timeout = 2影响到了前面的Session.Timeout = 1。

由此证明,Session.TimeOut是会影响全部Session的,Session的过期时间是从你最后的一次操作开始计时的。


0 0