Asp.net会话详解2——sessoin存储和配置

上文说了Asp.Net会话状态的Session源由,本节主要介绍下Session存储和配置。

一、客户端存储

根据上文说的Sessio源由,可知Session是存储在两个地方的。SessionID是存储在客户端的,主要是以Cookie存储的,而Session其他信息则是存储在服务器端的,而存储在服务器端是很多种模式的。SessionID存储在客户端,在ASP时,是完全存储在Cookie里的,这就会有一个问题,就是如果客户禁用Cookie时,会给他浏览web应用程序造成很大困扰。到了Asp.Net时代,SessionID在客户端的存储主要有两种方式:Cookie和Cookieless,其中Cookie方式是默认的存储方式,但是Cookieless 不是以Cookie存储的,而是以URL方式存储的,具体配置就是找到应用程序web.config下如下代码:

<sessionState mode="InProc
   stateConnectionString="tcpip=127.0.0.1:42424
   sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
   cookieless="false"
   timeout="20"/>

把其中的cookieless="false" 改为cookieless="true"即可。

这样Session会话信息就不是以cookie存储的,而是以URL方式存储,同时会在URL地址上显示。做一个测试页面default.aspx,将cookieless="true",运行时URL会显示如下所示(其中红色方框即为Session会话信息,且为自动增加)。


二、服务器端存储

页面的所有代码都使用类似于字典样式的方式来引用Session对象,但Session在服务器端存储的方有点奇怪,是使用提供程序的模式来选择会话状态的存储方式。而Asp.Net使用三种存储提供程序:

1、InProc——进程中的会话状态存储

这个是当我们新建一个应用程序后系统默认采取的会话状态存储方式。在这种模式下会话状态存储在Asp.Net内存中的辅助进程中。它没有串行化,对象也没有退出进程,因互它是会话模式中速度最快的。但是会话是存储在内存中,存储的数据越多,服务器端所消耗的内存就越大,在会话超时前就可能耗尽内存。假设你访问某个应用程序并单击其中一个页面,就可能在正在进行的会话中存储一个40M的XmlDocument,如果你一直没有退出,这块内存就要被占用20分钟左右(根据配置超时时间长短不同)。

尽管该模式速度很快,但也有局限,即当你再次使用辅助进程或应用程序时,所有的会话数据都会丢失。另外当你因修改web.config配置文件或是修改文件时就会造成重新启动

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值