Session的简单使用

1.Session的简单介绍

Session是服务器端存储数据的一种方式,为了解决HTTP的无状态性,Session与Cookie不同的是,Cookie是存储在客户端的,而Session存储在服务器端,所以Session是一种相对比较安全的信息存储方式,同时Session的使用需要Cookie的支持,因为Session对于用户来说并不是共享的,每一个用户的Session都有系统默认的提供一个SessionID,每次用户访问站点的时候,都会将Session ID添加到响应报文头中,发送给服务器,然后由服务器根据SessionID找到具体的存储区域获取到指定的数值。此外Application也是数据存储传递的一种方式,它和Session相比最重要的一点区别就是它里面存储的数据,对于所有的访问站点的用户来说是共享的,所以,一般当需要统计站点的访问的人数的时候,可以将信心存储在Application当中。

因为Session是存储在服务器中,可能会占用服务器大量的内存,所以Session是有一个过期时间的,默认的过期时间是20分钟,可以通过设置Session的属性TimeOut设置Session的过期时间,类似于cookie的Empires属性设置过期时间,同时可以使用Web.config文件中的节点属性timeout进行设置。

2.Session的使用优劣

优点:

1.Session可以解决HTTP的无状态性,实现信息的保持和在页面中的传递,实现页面信息的共享。

2.相对于Cookie而言,Session存在于服务器端,保证数据的安全性。

3.Session是不共享的,独立的保存每一个用户的数据,对于用户来说是安全的。

4.使用简单,可以很轻松的实现对各种类型数据的存储。

缺点:

1.由于数据是存储在服务器端,所以当用户的访问量比较大的时候,占用的内存将比较大,成为瓶颈(主要针对的是InProc模式)。

2.对于StateServer和SqlServer模式来说,当数据的传递的时候,用到的类必须进行可序列化处理,因为这两种模式对于数据的存储和读取使用的是序列化和反序列化,但是序列化和反序列化是相对比较慢的,影响反应速度。

3.Session的使用

添加Session:

Session["Name"]="小明";

设置过期时间:

Session.TimeOut="10";//是以分钟为单位

除去Session:

Session["Name"]=null;//等待GC回收

使用方法去除Session:

Session.Clear();

Session.RemoveAll();

Session.Remove(“Name”);

4.Session的模式设置

1.默认的模式:InProc,这是内存模式,也就是存在于当前服务器的内存中

<System.Web>
     <sessionState mode="InProc" timeout="10">
     </sessionState>
</System.Web>

这种方式的优点是显而易见的,存储在服务器的内存中,跟应用程序在同一程序域,也就是在IIS中,访问速度快,但是当访问量过大的时候,这将给服务器带来压力,同时当应用程序重新启动的时候(IIS重启),session将会全部丢失。所以不适合在大访问量并且服务器容易挂掉的场合。

2.StateSession模式,状态服务器模式

<System.Web>
    <sessionState mode="StateServer"  stateConnectionString="tcpip="127.0.0.1:42424" timeout="30"> 
    </sessionState>
</System.Web>


这种模式还是比较常用的,需设置stateConnectionString中的tcpip,设置对应的状态服务器的ip地址和端口号,默认的端口号是42424,可以通过修改配置表修改端口。

需要启动State Server服务,具体的方式使用右键点击“我的电脑”,然后选择管理-服务,找到ASP.NET State Server,将服务开启。然后就可以正常使用了

StateServer服务器和IIS是不同的服务器,所以即使IIS重新启动,数据都不会丢失,同时StateServer可以通过设置tcpip,将其部署到某台服务器中。

3.SqlServer模式

需要设置mode=“SqlServer”,同时需要对Sql Server数据库进行配置,具体流程略,配置结束后,会在Sql Server数据库中生成两张表格,用来存储SessionID等信息

这种模式实现的功能和StateServer模式近似,但是这种模式对于数据的存储是持久化的存储,可以使用其他的应用进程进行访问,这是一种最安全可靠的Session存储方式,对于数据的传输,同样需要序列化和反序列化,所以在存取性能是很慢,同时因为需要用到Sql Server数据库,所以必须保证Sql Server的正常运行。

4.Custom模式

这种模式是用户自定义模式,相比于Sql Server模式生成两个默认的表,你可以使用自定义模式,在已有的表中添加,或者自定义表添加。可以存储在其他类型的数据库中,还可以自己手动的创建Session Id代替系统默认的创建,通过实现系统接口ISessionIDManager接口

5.Off模式

禁止使用Session,这是应用程序级别的禁止,在整个应用程序中将被禁止使用Session

同时可以使用页面级别的禁止,这种方式是比较常用的也比较的灵活。

<%@ Page EnableSessionState="false"%>

 

转载于:https://www.cnblogs.com/XZhao/p/6340719.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值