Asp.net的几种会话状态模式(SessionState Mode)

发布时间 2023-08-22 16:26:24作者: itjeff

不计Custom的话,Asp.net的会话状态模式(SessionState Mode)有四种类型。

一、Off模式

即关闭Session。

全站关闭Session可在Web.Config文件中的<system.web>节中写入:

<sessionState mode="off">

要在某个页面上关闭Session,可在页面上添加:

<%@ Page EnableSessionState="false" %>

 

二、InProc模式(缺省模式)

如果未在Web.config文件中配置SessionState Mode,默认即是InProc模式。

如果要定制InProc模式的参数,需要写入Web.config文件,例如: 

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

cookieless设置是否允许不使用Cookie,timeout设置超时时间,单位为分钟。

InProc模式允许无Cookie的会话,以及在服务器之外存储会话数据。

如果设置为允许无Cookie,不管Cookie还是隐藏表单字段都用不着了,即使网页中没有表单也能加入会话。

InProc模式依赖于 ASP.NET进程, 当IIS进程崩溃或者重启时,保存在进程中的会话状态会丢失。

 

三、StateServer模式

StateServer模式是将会话数据存储到单独的内存缓冲区中,由一个Windows服务“ASP.NET State Service ”(aspnet_state.exe)来控制这个缓冲区,需要设置stateConnectionString:

<sessionState mode="StateServer"  stateConnectionString="tcpip=127.0.0.1:42424" timeout="20" />
或本地存储
<sessionState mode="StateServer" cookieless="false" timeout="300"></sessionState>

StateServer模式的优点是独立于IIS进程,IIS应用程序的重启不影响会话数据。

 

四、SQLServer模式

使用SQL Server来保存Session,需要先创建ASPState数据库。