不计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" />
StateServer模式的优点是独立于IIS进程,IIS应用程序的重启不影响会话数据。
四、SQLServer模式
使用SQL Server来保存Session,需要先创建ASPState数据库。