ASP.NET 中Session的状态保持方式(转)

ASP.NET提供了Session对象,从而允许程序员识别、存储和处理同一个浏览器对象对服务器上某特定网络应用程序的多不行呼吁的上下文信息。Session对许浏览器和服务器的一律次对话,在浏览器第一告网络应用程序的某某页面时,服务器会触发Session_onStart事件;在对话超时或者让关的时段会触发Session_onEnd
事件。程序员可以以代码中应这有限单事件来处理及同等次对话相关的天职,如开发和刑释解教该次对话而采取的资源相当。

  
于ASP.NET的次中假如采用Session对象时,必须保证页面的@page指令中EnableSessionState属性是True或者Readonly,并且于web.config文件中对的装置了SessionState属性。

  ASP.NET中Session的状态保持是出于web.config文件中之<system.web>标记下的<sessionstate>标记的mode属性来控制的。该属性有四种植或的价值:Off、Inproc、StateServer和SQlServer.

  设为Off会禁用Session.

  Inproc是少省之安,这种模式与以前的ASP的对话状态的计是近似之,会话的状态会吃保存在ASP.NET进程被,它的独到之处是扎眼的:性能。进程内的多寡访问自然会于夸进程的顾快。然而,这种方法Session的状态依赖让ASP.NET进程,当IIS进程崩溃或者正常再从启时,保存于经过遭到之状态将少。

  为了克服Inproc模式之短处,ASP.NET提供了有限种植进程外保会话状态的方。

  ASP.NET首先提供了提供了一个Windows服务:ASPState,这个服务启动后,ASP.NET应用程序可以以mode属性设置也“SateServer”,来以这Windows服务提供的状态管理艺术。

  除了以web.config文件中设置mode属性为StateServer外,还得安装运行StateServer服务器的IP地址与端口号.如果以IIS所于的机器运行StateServer则IP地址便是127.0.0.1,端口号通常是42424.配备如下:

mode=”StateServer”

stateConnectionString=”tcpip=127.0.0.1:42424″

    使用这种模式,会话状态的贮存将不予赖IIS进程的破产或者更开,会话的状态将积存于StateServer进程的内存空间中。

   另一样种会话状态模式是SQLServer模式。这种模式是用会话的状态保存在SQL
Server数据库被的。使用这种模式前,必须至少有雷同台SQL
Server服务器,并在服务器被树立需要之表和存储过程。.NET
SDK提供了个别独脚本来简化这工作:InstallSqlState.sql和UnInstallSqlState.sql。这半国文件存放于脚路径中:

  <%SYSTEMDRIVER%>\Winnt\Microsoft.NET\Framework\<%version%>\

假设配置SQL Server 服务器,可以以指令行中运行SQL
Server提供的授命行工具osql.exe

  osql -s [server name] -u [user] -p [password]
<InstallSqlState.sql

例如:

  osql -s (local) -u as -p “”-i  InstallSqlState.sql

做好必要的数据库准备工作后,将web.config文件中之sessionstate元素的mode属性改吗”sqlserver”,并点名SQL连接字符串。具体如下:

  mode=”SQLServer”

    sqlConnectionString=”data
source=127.0.0.1;userid=sa;password=;Trusted_Connection=yes”

运SQLServer模式处了好要Session的状态不依赖让IIS服务器之外,还可动用SQL
Server的集群,使状态存储不借助于让单个的SQL
Server,这样即使足以呢应用程序提供巨大的可靠性。

相关文章