Session有时莫名其妙丢失,已经设了stateserver了,还丢,为什么
我的web.config 已经如下设置了,StateServer服务也开了,Session是有时可以,有时丢失,同一时间,我的机上可以,我隔壁同事的不行,N怪啊!有时又是我不行,我同事的可以,唉,被害死了.
<sessionState mode="StateServer" cookieless="false" timeout="240" stateConnectionString="tcpip=127.0.0.1:42424" stateNetworkTimeout="14400" />
<machineKey validationKey="78AE3850338BFADCE59D8DDF58C9E4518E7510149C46142D7AAD7F1AD49D95D4" decryptionKey="5FC88DFC24EA123C" validation="SHA1"/>
急死了,我看了很多文章,这些都排除了,代码也应该不会出错,否则不会我的行,我同事机器的不行,
SessionState 的Timeout),其主要原因有三种。
一:有些杀病毒软件会去扫描您的Web.Config文件,那时Session肯定掉,这是微软的说法。
二:程序内部里有让Session掉失的代码,及服务器内存不足产生的。
三:程序有框架页面和跨域情况。
第一种解决办法是:使杀病毒软件屏蔽扫描Web.Config文件(程序运行时自己也不要去编辑它)
第二种是检查代码有无Session.Abandon()之类的。
第三种是在Window服务中将ASP.NET State Service 启动。
--------------------编程问答-------------------- 使用SQL Server保險點,呵呵 --------------------编程问答-------------------- 没有装sql server啊 --------------------编程问答-------------------- 我的程序也有这个问题 ,
也是经常莫名其妙的就丢失了 --------------------编程问答-------------------- 老兄,你这个问题搞定了么。我遇到的情况跟你的一模一样~! --------------------编程问答-------------------- session 一直有这个问题。
但是微软在 iis 中的相关设置 解决了,但不彻底。
你去网上找找吧 --------------------编程问答-------------------- Session超时和莫名丢失的处理
原因:
1.改动global.asax webconfig bin 目录里的东西,导致Web Application重启
2.有些杀毒软件会去扫描webconfig文件,也会导致Session丢失
3.服务器内存不足导致Session丢失
4.程序内部有让Session丢失的代码
5.程序有框架页面和跨域情况
解决:
1.修改webconfig中timeout的时效时间
2.建议让网站使用独立的应用程序池
3.iis设置Session超时时间(默认为20分钟)
4.在应用程序池上打开网站对应的应用程序池属性,将web数量改为1 重启iis
5.在主页里面嵌套一个框架页iframe,设置宽度高度为0.在里面的加载页面里的
<head>里面加入<meta http-equiv="refresh" content="1080">这一句,意思是每隔18分钟向服务器发送一次请求。刚好赶在Session失效之前。这样session就永不失效了 --------------------编程问答-------------------- 你回收APP对应的应用程序池,然后立即让你和同事测试下,如果通过,但过一会又出现,就是IIS的问题 --------------------编程问答-------------------- localhost/127.0.0.1是本地连接回环地址(设置后,只有本机可以访问)
StateServer 模式的实质是,把Session 存放在一个单独的进程里,此进程独立于 aspnet_wp.exe 或 w3wp.exe 。启用此服务后,在“任务管理器”中可以看到一个名为 aspnet_state.exe 的进程,下面开始说明一下设置的具体步骤:
1、 修改注册表(关键步骤)
运行 regedit → 打开注册表 → 找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state \Parameters 节点 → 将 AllowRemoteConnection 的键值设置成“1”(1 为允许远程电脑的连接,0 代表禁止)→ 设置 Port (端口号)
注意事项:
a)、若ASP.NET State Service 正在运行,修改注册表内容后,则需要重新启动该服务
b)、注意端口号的键值是以十六进制储存的,可以使用十进制进行修改,42424 是默认的端口
c)、AllowRemoteConnection 的键值设置成“1”后,意味着允许远程电脑的连接,也就是说只要知道你的服务端口,就可享用你的ASP.NET State Service,即把 Session 存放在你的电脑进程内,因此请大家慎用;键值为“0”时,仅有stateConnectionString 为“tcpip=localhost: 42424”与“tcpip=127.0.0.1:42424”的情况,方可使用ASP.NET State Service
补充:.NET技术 , ASP.NET