应该是弹出窗口引起的session丢失.一:有些杀病毒软件会去扫描您的Web.Config文件,那时Session肯定掉,这是微软的说法。
二:程序内部里有让Session掉失的代码,及服务器内存不足产生的。
三:程序有框架页面和跨域情况。
第一种解决办法是:使杀病毒软件屏蔽扫描Web.Config文件(程序运行时自己也不要去编辑它)
第二种是检查代码有无Session.Abandon()之类的。
第三种是在Window服务中将ASP.NET State Service 启动。
还有一种情况是您用资源管理器打开的还是IE打开的。
最好用IE打开试试。
二:程序内部里有让Session掉失的代码,及服务器内存不足产生的。
三:程序有框架页面和跨域情况。
第一种解决办法是:使杀病毒软件屏蔽扫描Web.Config文件(程序运行时自己也不要去编辑它)
第二种是检查代码有无Session.Abandon()之类的。
第三种是在Window服务中将ASP.NET State Service 启动。
还有一种情况是您用资源管理器打开的还是IE打开的。
最好用IE打开试试。
在A页面上,用window.open打开B页面,再在B页面打开一个模态窗口C页面,C页面取不到前面页面的Session,C页面的sessionid也和前面的页面不同,此时前面的页面session并没有丢失,也就是说打开C页面时,重新建立的会话。
不知是什么原因才造成这种情况,听说是ie的bug.
到现在还没找到解决方法
基本上是客户端的问题
我以前遇到过几次
新开窗口丢失session实在不行,楼主用url传递参数的方式来替换吧
生成一个随机的串用url传递来模拟session小小建议,你可以试试
首先说一下环境情况,
1.没有杀毒软件,
2.应该也不会出现内存不足的情况
3.没有跨域,已启动ASP.NET State Service
3.没有特意清除session的代码
4.所有程序都在IE中运行试了几次前面页面sessionid都是一样,当到C页面就变了~```
=======
你将ie的历史文件全部删除,然后试试?
代码有点特殊,用url传值方法放那好像不太可取。
第二个参数把window对象传过去就不会丢失session了
SessionID不会因打开窗口的方式而改变的。
SessionID改变了,也就是说,你的会话状态曾经被注销,
而且已被重新生成会话。
检查一下你的Session是如何管理的。
1.删除历史文件后,问题还是依然存在
2.是跟踪后看到的,不知是否这样有问题。tianyi_hsy(學無止境):
加入了window后并没有起作用,问题还是存在。laodeng72586(天呀,地呀,神呀,靠,无聊吗?干活去!) :
应该没有被注销,前一页session值还是可以取到的。
showModalDialog 中加入了window参数,试了后还是一样
open好像不支持这样写
以前我是先用window.showModalDialog弹出,
再用window.open弹出窗口有问题就是这样解决的。
我的是用OPEN来的。没这个问题!
如果沒有,請樓主在模態頁面的<head></head>之間加入:<base target="_self" />
mode="StateServer"
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
cookieless="false"
timeout="20"
/>并加上一句
<machineKey validationKey="78AE3850338BFADCE59D8DDF58C9E4518E7510149C46142D7AAD7F1AD49D95D4" decryptionKey="5FC88DFC24EA123C" validation="SHA1"/> 将asp.net state服务启动,改成自动!
估计你要看下哪里对内存是否进行了操作,以致将Session给销掉了!否则,一般不会的!