首页 > 编程 > .NET > 正文

asp.net避免Sessiont丢失无效的方法

2024-07-10 13:05:09
字体:
来源:转载
供稿:网友

最大的网站源码资源下载站,

最简单的办法就是不要使用默认的方式也即
inproc(默认,进程内的会话状态):session存储在iis进程中(web服务器内存)。如果使用的是windows   2000   server或windows   xp,iis使用aspnet_wp.exe进程,如果使用的是windows   2003   server,iis使用w3wp.exe。

inproc拥有最好的性能。但进程内session很容易丢失session信息。如果重启了应用程序,所有的session信息就会丢失。而很多原因都会导致asp.net应用程序的重启。
 修改了web.config或global.asax文件,或改变了文件的修改日期。
 修改了/bin或/app_code目录里的文件。
 防病毒软件修改了上述文件等等

你可以考虑以下两种方式
stateserver(进程外的会话状态):session存储在独立的windows服务进程aspnet_state.exe中

如果要启用stateserver中的session状态,首先要在”控制面板”--“管理工具”--“服务”中,启用asp.net   state   services(asp.net   状态服务),并将此服务设置为automatic(自动启动)

启动asp.net状态服务后,需要配置asp.net应用程序来使用它。
我们需要在web.config文件中system.web节点中添加如下代码
<sessionstate   mode="stateserver"   statenetworktimeout="20"
stateconnectionstring="tcpip=127.0.0.1:42424"   />
首先,mode属性被设为stateserver。接着,stateconnectionstring属性用来指定asp.net状态服务器端的位置。连 接位置被创建为在127.0.0.1,端口42424。最后,statenetworktimeout属性用来指定连接超时的秒数。
需要注意的是,此时必须把对象标注为可序列化后(使用serializable特性标记需要序列化的类)才能在服务中进行存储。microsoft建议所 有的开发人员在开发过程中都使用进程外的会话状态,以避免项目如果切换到其他进程外的提供程序或sqlserver而导致站点的错误。

或者使用
sqlserver:session存储在sqlserver数据库的表中,可以用aspnet_regsql.exe配置它(sqlserver服务器) 
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表