Asp.net会话详解1——sessoin源由

根据网络资料并整理汇总,理解的不一定准确,供大家参考。

Session模型介绍

要说Session是什么之前,我们有必要了解asp.net web服务器和客户端的运行机制。大家知道web应用程序都是B/S结构的,呵呵,如果不是,那就不叫web应用程序了。也就是说瘦客户端,很多代码都是放在服务器端的,而客户端访问服务器是通过浏览器进行的。浏览器访问服务器端是通过HTTP协议的,而http协议是一种无状态协议。那什么是无状态协议呢,其实无状态协议就是对事务处理没有记忆能力,也就是说如果一个客户端访问web服务器端后,过段时间再访问服务器端后,它不知道这两个访问是来自同一个客户端。这种状态在给客户浏览应用程序造成很大的困扰,比如我去浏览一个购物网站,先购买一件物品提交后,再购买另一件物品,同一个人购买的两件物品,可是由于http协议是无状态协议,服务器端并不知道这两件物品来自一个客户端,或者服务器端不能识别同一个客户端浏览的不同页面。但是你看到哪个购物网站是这样的呢,都不是。

会话状态标识符

这种情况服务器是如何处理的呢?事实上,如果真是如上所说的那样,那么整个WEB应用程序就乱套,此时有效的状态管理就是web应用程序必备的一个功能。  在客户端第一次访问web服务器端时,客户端和服务器端之间就建立一个会话,同时服务器端会自动分配给客户端一个ID即SessionID,用时标识这个客户惟一的标识,这个ID在一段时间内有效的。就有点像我们日常生活中使用的临时证件,为什么说是临时证件而不是身份证呢,因为这个ID是有效期限的,超过规定的时间他就失效,下次再登录时,他又重新分配客户端一个新的ID,而这两个ID之间通常是没有什么关系的。而SessionID是由web服务器应用程序随机的产生的一个24个字符的字符串,只包含URL中所允许使用的ASCII字符。SessionID值是使用保证唯一性和随机性的算法生成的,其中保证唯一性的目的就是确保会话不冲突,保证随机性的目的就是保证安全性,确保某有怀有恶意的用户不能使用新的SessionID来计算现有会话的SessionID值。

有了这个SessionID值,在用户向服务器发出请求时,浏览器会将用户的SessionID值自动附加到HTTP头信息中,当服务器端处理完这个请求后,需要将处理结果返回给用户,就是根据这个SessionID值找到当初发起请求的用户。想想,如果没有这个值,就是服务器端处理完请求了,它也不知道将处理结果返回给谁啊。

会话状态功能

先介绍下什么是会话和会话状态。其中会话就是用户与服务器端连接期间发送的所有请求,而会话状态就是用户在会话期间生成和使用数据一个集合,就是提供用于在一个会话持续期间保留变量值的方法。Asp.net内置这种会话状态功能,且在默认情况下会为所有Asp.Net应用程序启用会话状态。Asp.Net会话状态将来自限定时间范围内的同一个浏览器的请求标识为一个会话。每个会话的状态彼此独立,在用户会话结束后就不复存在。使用会话状态,我们可以做到:

(1)对从浏览器到服务器端的请求能够自动识别和分类。在用户向服务器端发出请求后,服务器端就会检查用户是否有发送的SessionID值,如果没有,则Asp.Net启动一个新会话。如果一直使用这个SesssionID值,会话就被视为活动的,如果会话请求的时间间隔超过指定的超时值(以分钟计),则该会话视为过期,使用过期的SessionID值发送的请求服务器自动生成一个新的会话。

(2)将会话范围的数据存储在服务器上以供跨多个浏览器请求使用。

(3)引发会话生存期管理事件如Session_OnStart、Session_OnEnd等。但是Session_OnEnd事件仅能在进程中(InProc,详细介绍见下文)的会话状态模式下使用。如果使用StateServer、SQLServer模式,则不会触发这个事件。

_________________________________________________________________________

这段就先写到这里,下篇将介绍会话状态的配置管理


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值