1、 Session的作用:
A、 在网络中的应用,主要用于标识网络中的没一个访问了服务器的客户端,以 WWW服务器来讨论,其它的还没研究,当用户首次与WWW服务器连接时,它就与服务器建立了session,同时服务器会同时为其分配一个sessionID用于唯一标识用户的身份,这个sessionID是由WWW服务器随机产生的一个由24个字符组成的字符串。这个sessionID有很大的意义,例如当一个用户提交表单时,浏览器会将用户的sessionID自动附加在http头信息中,服务器处理完表单,将表单返回给sessionID的对应用户,在这里就需要sessionID标识用户的作用
B、 在我们编写asp.net程序时,可以通过访问asp.net的内置session对象为每个用户存储各自信息,类似程序中的一个全局变量
2、 session信息的配置
在asp.net应用程序中,都有一个web.config文件,session的配置信息就包含在
<sessionState
…
/>中
sessionState的语法:
<sessionState mode="Off|InProc|StateServer|SQLServer"
cookieless="true|false"
timeout="number of minutes"
stateConnectionString="tcpip=server:port"
sqlConnectionString="sql connection string"
stateNetworkTimeout="number of seconds"
/>
必须具备的属性:
属性 | 选项 | 描述 |
mode |
| 设置将Session信息存储到哪里 |
| Off | 设置为不使用Session功能 |
| InProc | 设置为将Session存储在进程内,就是ASP中的存储方式,这是默认值。 |
| StateServer | 设置为将Session存储在独立的状态服务中。 |
| SQLServer | 设置将Session存储在SQL Server中。 |
可选的属性:
属性 | 选项 | 描述 |
cookieless |
| 设置客户端的Session信息存储到哪里 |
| ture | 使用Cookieless模式 |
| false | 使用Cookie模式,这是默认值。 |
timeout |
| 设置经过多少分钟后服务器自动放弃Session信息。默认为20分钟 |
stateConnectionString |
| 设置将Session信息存储在状态服务中时使用的服务器名称和端口号,例如:"tcpip=127.0.0.1: 42424”。当mode的值是StateServer是,这个属性是必需的。 |
sqlConnectionString |
| 设置与SQL Server连接时的连接字符串。例如"data source=localhost;Integrated Security=SSPI;Initial Catalog=northwind"。当mode的值是SQLServer时,这个属性是必需的。 |
stateNetworkTimeout |
| 设置当使用StateServer模式存储Session状态时,经过多少秒空闲后,断开Web服务器与存储状态信息的服务器的TCP/IP连接的。默认值是10秒钟。 |
3、在asp.net中客户端与服务器端的session状态存储
asp.net中,客户端存储session信息的方式有两种:cookie和cookieless,默认状态下,客户端还是使用cookie存储session信息,cookieless信息也可以在web.config文件中的sessionState里设置,如果cookieless=true客户端的session将不在使用cookie存储。
如果cookieless=false,那么session的信息将存储在IIS进程中,当IIS关闭或重启,这些信息都会丢失,这种方式的优点在于性能高,因为所有的session信息都保存在IIS进程中,所以IIS能够很快访问到这些信息,这种模式比进程外存储session信息或是SQLserver存储session信息都要快很多。
将服务器session信息存储在进程外:管理工具>服务>asp.net state service(启动),该服务主要是启动一个保存session信息的进程,服务启动后可以在任务管理器进程中看到一个aspnet_state.exe进程。或是将session信息存储在其它的服务器上,此时sessionState中的mode改为StateServer,stateConnectionString中也要配置目标服务器的地址,还有一个条件就是目标服务器必须安装了.NET Framework并启动了asp.net state service服务
将服务器session信息存储在SQL Server中(整理中……)