将session存入数据库的方法(摘自“漂泊雪狼”--在asp.net程序开发中避免编译就要重新登录系统的小技巧 )
最近在做一个业务系统,在项目进行的过程中发现,需要不断的修改->编译系统->登录,发现这样重复工作量太大了。
静下心想想发现,这是asp.net程序Session默认保存在IIS进程中,项目一编译bin目录文件被改写,IIS进程就会重启,Session自然丢失,当然也要重新登录了。
于是通过配置将Session保存到其他的地方,在asp.net中Session的保存方式有以下选择:IIS进程中(默认)、StateServer中、数据库中、自定义方式。其中StateServer方式我配置保存在本机的ASP.NET 状态服务中,顺利成功,但是想保存到其他机器总是失败,本人不知道是什么原因,就是保存在本机的ASP.NET 状态服务中是,stateConnectionString中的目标机器地址只能是localhost或者127.0.0.1,我换成我的机器名或者局域网的IP死活就是不行,后来只有配置到数据库中去了。
首先就是要创建一个状态数据库(这个简单),再就是生成状态数据库的表和存储过程及其他的东西,在.NET提示符运行一下命令:
<sessionState mode="SQLServer" allowCustomSqlDatabase="true" stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="data source=192.168.0.223;database=asp_state;uid=sa;pwd=sa" />
搞定了,在编译代码不用重新登录了,数据库保存在另外一台机器,即使是我的机器重启了也不用重新登录(当然是在Session没有过期的时候,sqlserver中有个作业在定时删除过期的Session记录),因为会话状态信息已经保存在数据库中。。
静下心想想发现,这是asp.net程序Session默认保存在IIS进程中,项目一编译bin目录文件被改写,IIS进程就会重启,Session自然丢失,当然也要重新登录了。
于是通过配置将Session保存到其他的地方,在asp.net中Session的保存方式有以下选择:IIS进程中(默认)、StateServer中、数据库中、自定义方式。其中StateServer方式我配置保存在本机的ASP.NET 状态服务中,顺利成功,但是想保存到其他机器总是失败,本人不知道是什么原因,就是保存在本机的ASP.NET 状态服务中是,stateConnectionString中的目标机器地址只能是localhost或者127.0.0.1,我换成我的机器名或者局域网的IP死活就是不行,后来只有配置到数据库中去了。
首先就是要创建一个状态数据库(这个简单),再就是生成状态数据库的表和存储过程及其他的东西,在.NET提示符运行一下命令:
D:\Program Files\Microsoft Visual Studio 8\VC>aspnet_regsql -ssadd -S 192.168.0.
200,1533 -U sa -P sa -d asp_state -sstype c
(运行命令时,一定要记得启用MSSQLServer的协议中的TCP/IP协议,并且端口也要对上)
开始添加会话状态。
..
已完成。
若要在 Web 应用程序中使用此自定义会话状态数据库,请在配置文件中进行指定,方法是
使用 <system.web>\<sessionState> 节中的“allowCustomSqlDatabase”和“sqlConnecti
onString”属性。
<sessionState mode="SQLServer" allowCustomSqlDatabase="true" stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="data source=192.168.0.223;database=asp_state;uid=sa;pwd=sa" />
搞定了,在编译代码不用重新登录了,数据库保存在另外一台机器,即使是我的机器重启了也不用重新登录(当然是在Session没有过期的时候,sqlserver中有个作业在定时删除过期的Session记录),因为会话状态信息已经保存在数据库中。。
posted on 2011-05-26 17:19 Joey_zy0210 阅读(1133) 评论(2) 编辑 收藏 举报