in

SDT Community Server

SDT Forums, Blogs, Photos server.

king_huang

怎么样才能使用单独进程保存你的session

asp.net 2.0默认的情况下,应用程序的session回跟应用程序一起绑定到aspnet_wp.exe(win 2000win xp)或者是w3wp.exe (win 2003), 那么这样就有问题了,当我们应用程序内部出现错误或者其他错误时,就会导致aspnet_wp.exe或者w3wp.exe出错,这样应用程序的session就回全数丢失掉,那样对于我们极其不方便。


       
后来查找了一下资料发现asp.net 2.0有这样一个机制,就是可以由用户自己选择用什么方式来保存应用程序的session。这个就是我们下面要讲的SessionStateMode

 

SessionStateMode 是一个枚举类型,下面是该类型的成员及状态模式:

 

InProc 模式,此模式将会话状态存储在 Web 服务器上的内存中。这是默认设置。

 

StateServer 模式,此模式将会话状态存储在一个名为 ASP.NET 状态服务的单独进程中。这确保了在重新启动 Web 应用程序时会保留会话状态,并让会话状态可用于网络场中的多个 Web 服务器。

 

SQLServer 模式将会话状态存储到一个 SQL Server 数据库中。这确保了在重新启动 Web 应用程序时会保留会话状态,并让会话状态可用于网络场中的多个 Web 服务器。

 

Custom 模式,此模式允许您指定自定义存储提供程序。

 

Off 模式,此模式禁用会话状态。

 

为了解决上面说到的问题,我们选用StateServer模式,下面是启用该模式的具体说明:

 

StateServer 模式将会话状态存储在一个称为 ASP.NET 状态服务的进程中,该进程是独立于 ASP.NET 辅助进程或 IIS 应用程序池的单独进程。使用此模式可以确保在重新启动 Web 应用程序时保留会话状态,并使会话状态可用于网络场中的多个 Web 服务器。

若要使用 StateServer 模式,必须首先确保 ASP.NET 状态服务运行在用于存储会话的服务器上。ASP.NET 状态服务在安装 ASP.NET .NET Framework 时作为一个服务进行安装。ASP.NET 状态服务安装在以下位置:

systemroot\Microsoft.NET\Framework\versionNumber\aspnet_state.exe

(具体就是启动:ASP.NET State Service 服务)

   若要将某个 ASP.NET 应用程序配置为使用 StateServer 模式,请在该应用程序的 Web.config 文件中执行以下操作:

sessionstate元素的 mode 属性设置为 SQLServer

 

stateConnectionString属性设置为 tcpip=serverName:42424

 

这里要注意:stateConnectionStringservername要跟IIS的虚拟目录的设置要一致,如果是本地的话请设置为:localhost或者127.0.0.1,如果是远程服务器的话,请设置为远程服务器的IP地址。(虽然是罗嗦了点,但是还是说完了)

 

Comments

No Comments
Copyright SDT, 2006-2009. All rights reserved.