1.由于项目dll文件变动比较频繁,而保存登陆的状态又保存在Session中,所以导致用户经常无故掉线。(dll变动的时候导致Session丢失)
2.有一种方法可以长期保存session,那就是session的SqlServer模式。还是先介绍一下session的四种模式吧:
www.sxzhongrui.com会话状态模块在Web.config文件中
①. Inproc是缺省的设置
它允许“无Cookie”的会话,以及在服务器之外存储会话数据。www.sxzhongrui.com会话状态模块在Web.config文件中像下面这样配置:
②.mode属性设为Off
和从前的ASP一样,www.sxzhongrui.com的会话状态管理是要产生开销的。所以,假如某个网页不需要访问Session对象,开发者应将那个页的Page预编译指令的EnableSessionState属性设为False。要为整个网站禁用会话状态,可在Web.config文件中将sessionState元素的mode属性设为Off。 为了克服inproc 模式的缺点, www.sxzhongrui.com 提供了两种进程外保存会话状态的方法(③和④)。
③.StateServer会话管理
将mode属性设为StateServer,也就是将会话数据存储到单独的内存缓冲区中,再由单独一台机器上运行的Windows服务来控制这个缓冲区。状态服务全称是“www.sxzhongrui.com State Service ”(aspnet_state.exe),它由Web.config文件中的stateConnectionString属性来配置。该属性指定了服务所在的服务器,以及要监视的端口:
④.用SQL Server进行会话管理 (重点讲解)
www.sxzhongrui.com还允许将会话数据存储到一个数据库服务器中,方法是将mode属性变成SqlServer。 在这种情况下,www.sxzhongrui.com尝试将会话数据存储到由sqlConnectionString属性(其中包含数据源以及登录服务器所需的安全凭证)指定的SQL Server中。
3.配置用SQL Server进行会话管理
具体配置如下:
①、运行Framewor安装目录下的InstallSqlState.sql文件,framework的安装目录为C:/WINDOWS/www.sxzhongrui.com/Framework/... (例如:C:\Windows\www.sxzhongrui.com\Framework\v4.0.30319)
②、这时会提示错误,因为该应用没有注册。此时需要在命令行下注册该应用,运行如下命令:
aspnet_regsql.exe -ssadd -sstype c -d
注:
会话定义成功,但是会提示在web应用中进行相应的配置,此时查看SQLServer会发现增加了数据库ASPState,但是没有表。
③、在命令行下运行如下命令:
aspnet_regsql.exe -ssadd -sstype p -S
该命令对此应用进行了持久化操作。这时会看到ASPState数据库里面多了两张表,ASPStateTempSession就可以用来保存Session。
应用时,需要在webconfig中添加如下配置:
配置节点如下:
如下:
虽然timeout设置的是20分钟但是 过期以后仍然可以获取到session的值。
原文地址: http://www.sxzhongrui.com/aiouwen521/article/details/17790681
-->