回忆一下Session会话的种类,默认有三种模式[1:InProc(进程内会话), 2:StateServer(进程外会话), 3:SqlServer(SqlServer会话)],还有一种是需要由自己扩展的,使用的可能性比较小,所以不回顾了。

    1:InProc 进程内会话

  Web.config配置文件

   <system.web>

        <sessionState cookieName="XX" mode="InProc"></sessionState>

      <\system.web>

      使用此模式时,会话保存在HttpAppliction进程中。想到于保存在一块内存。

   2:StateServer 进程外会话

  Web.config配置文件

   <system.web>

    <sessionState cookieName="XX" mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424"></sessionState>

      <\system.web>

      使用此模式时,会话保存在aspnet_state.exe的windows服务实例中,aspnet_state服务的cmd启动命令:net start aspnet_state。

  stateConnectionString指定保存会话的服务器

   2:SqlServer会话

  Web.config配置文件

   <system.web>

    <sessionState cookieName="XXX"  mode="SQLServer" sqlConnectionString="data source=XXXX;user  id=XXX;password=XXX;"></sessionState>     

      <\system.web>

      使用此模式时,会话保存在SqlServer数据库中(ASPState)。分别保存在ASPStateTempApplications和ASPStateTempSessions表中。

     使用aspnet_regsql.exe

     创建命令aspnet_regsql -$ XXXX(Data Source) -U XXX(User Id) -P XXX(Password) -ssadd -sstype p

     此处使用默认数据库,还可以通过指定自定义数据库进行会话保持。

   最后补充说明:除去进程中模式以外,其他模式给Session会话赋值的引用类型变量必须都支持可序列化[Serializable]