详解Session过期时间

本文通过实验验证了ASP.NET中Session.Timeout属性是否只影响当前Session还是所有Session。结果显示,Session.Timeout的变化会影响到所有已存在的Session,而非仅限于当前Session。
摘要由CSDN通过智能技术生成

最近项目中遇到需要对单个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

protected void Page_Load(object sender, EventArgs e)
        {
            Response.Write("user1:" + Session["user1"]);
            Response.Write("user2:" + Session["user2"]);
        }
User1.aspx

protected void Page_Load(object sender, EventArgs e)
        {
            Session["user1"] = "user1";
            Session.Timeout = 2;
        }
user2.aspx

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

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的过期时间是从你最后的一次操作开始计时的。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值