应该是弹出窗口引起的session丢失.一:有些杀病毒软件会去扫描您的Web.Config文件,那时Session肯定掉,这是微软的说法。   
  二:程序内部里有让Session掉失的代码,及服务器内存不足产生的。   
  三:程序有框架页面和跨域情况。   
  第一种解决办法是:使杀病毒软件屏蔽扫描Web.Config文件(程序运行时自己也不要去编辑它)   
  第二种是检查代码有无Session.Abandon()之类的。   
  第三种是在Window服务中将ASP.NET   State   Service   启动。   
  还有一种情况是您用资源管理器打开的还是IE打开的。   
  最好用IE打开试试。

解决方案 »

  1.   

    我再描述一下问题的情况:
    在A页面上,用window.open打开B页面,再在B页面打开一个模态窗口C页面,C页面取不到前面页面的Session,C页面的sessionid也和前面的页面不同,此时前面的页面session并没有丢失,也就是说打开C页面时,重新建立的会话。
    不知是什么原因才造成这种情况,听说是ie的bug.
    到现在还没找到解决方法
      

  2.   

    这种问题不太好处理
    基本上是客户端的问题
    我以前遇到过几次
    新开窗口丢失session实在不行,楼主用url传递参数的方式来替换吧
    生成一个随机的串用url传递来模拟session小小建议,你可以试试
      

  3.   

    有没有检查一下b页面的session与A是同相同?
      

  4.   

    慕白兄:
    首先说一下环境情况,
    1.没有杀毒软件,
    2.应该也不会出现内存不足的情况
    3.没有跨域,已启动ASP.NET   State   Service   
    3.没有特意清除session的代码
    4.所有程序都在IE中运行试了几次前面页面sessionid都是一样,当到C页面就变了~```
      

  5.   

    试了几次前面页面sessionid都是一样,当到C页面就变了~```
    =======
    你将ie的历史文件全部删除,然后试试?
      

  6.   

    vengair:
    代码有点特殊,用url传值方法放那好像不太可取。
      

  7.   

    顺便问一句,你看的sessionid是输出到页面上还是跟踪后看到的?
      

  8.   

    window.showModalDialog(url, window, "dialogWidth:800px;dialogHeight:560px;center:yes;help:no;resizable:no;status:no;");
    第二个参数把window对象传过去就不会丢失session了
      

  9.   

    Session.SessionID改变?
    SessionID不会因打开窗口的方式而改变的。
    SessionID改变了,也就是说,你的会话状态曾经被注销,
    而且已被重新生成会话。
    检查一下你的Session是如何管理的。
      

  10.   

    慕白兄:
    1.删除历史文件后,问题还是依然存在
    2.是跟踪后看到的,不知是否这样有问题。tianyi_hsy(學無止境):
    加入了window后并没有起作用,问题还是存在。laodeng72586(天呀,地呀,神呀,靠,无聊吗?干活去!) :
    应该没有被注销,前一页session值还是可以取到的。
      

  11.   

    window.open的第二个参数用window试试
      

  12.   

    第二个参数是窗口句柄,如果让打开的窗口继承第一个应该不会重新创建Session
      

  13.   

    tianyi_hsy(學無止境):
    showModalDialog 中加入了window参数,试了后还是一样
    open好像不支持这样写
      

  14.   

    那就不懂了,
    以前我是先用window.showModalDialog弹出,
    再用window.open弹出窗口有问题就是这样解决的。
      

  15.   

    http://support.microsoft.com/default.aspx/kb/196383
      

  16.   

    会不会浏览器问题??瞎说的。
    我的是用OPEN来的。没这个问题!
      

  17.   

    看看什么地方用到session是否把原来的覆盖了。
      

  18.   

    不知樓主的問題解決沒?
    如果沒有,請樓主在模態頁面的<head></head>之間加入:<base target="_self" />
      

  19.   

    Session丢失的问题。。去改WEBCONFIG文件!    <sessionState 
                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服务启动,改成自动!
      

  20.   

    见鬼了,我按你的弄了一个,完全没问题哦!
    估计你要看下哪里对内存是否进行了操作,以致将Session给销掉了!否则,一般不会的!