备注 (1)使用 StateServer 模式 确保运行 ASP.NET 状态服务的服务器是要存储会话状态信息的远程服务器。该服务与 ASP.NET 一起安装,其默认位置为 <驱动器>:\systemroot\Microsoft.NET\Framework\version\aspnet_state.exe。 在应用程序的 Web.config 文件中, 设置 mode=StateServer 并设置 stateConnectionString 属性。 例如,stateConnectionString="tcpip=sarath:42424"。 (2)使用 SQLServer 模式 在运行 SQL Server 的计算机(它将存储会话状态)上运行 InstallSqlState.sql (默认的安装位置为 <驱动器>:\systemroot\Microsoft.NET\Framework\version)。 这将创建一个名为 ASPState 的数据库,该数据库具有新的存储过程并且在 TempDB 数据库中具有 ASPStateTempApplications 表和 ASPStateTempSessions 表。 在应用程序的 Web.config 文件中,设置 mode=SQLServer 并设置 sqlConnectionString 属性。例如,sqlConnectionString="data source=localhost;Integrated Security=SSPI;Initial Catalog=northwind"。 (3)示例 以下示例指定若干会话状态配置设置。 <configuration> <system.web> <sessionState mode="InProc" cookieless="true" timeout="20"/> </sessionState> </system.web> </configuration> 要求 包含于:<system.web> Web 平台:IIS 5.0、IIS 5.1、IIS 6.0 配置文件:Machine.config、Web.config 配置节处理程序:System.Web.SessionState.SessionStateSectionHandler 请参见 ASP.NET 配置 | ASP.NET 设置架构 | SessionStateModule 作者: 来源: (责任编辑:webjx)--- -------------收集之二--------------------------------- [出现原因:]在Windows2003的服务器中的IIS6加入了应用程序池来回收一些无用的进程的功能,当由于网站程序的错误或访问量太多的导致的应用程序池会自动回收该进程,防止网站进入“死机”状态,而这时候的应用程序池的回收就会导致session变量被清除,就出现了session变量不见的现象。
为了解决这种在Windows2003下才出现的问题,我们在服务端起动ASP.NET State Service服务,并且在系统的machine.config做了一些改动。现在默认的情况下会话状态mode是StateServer。如果您的网站根目录下也配有一个web.config配置文件,请把mode="InProc"改成mode="StateServer",如下代码,就可以防止session变量的丢失: <sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;Integrated Security=SSPI" cookieless="false" timeout="30" /> + 注:只适用于支持asp.net的用户。 |
|