各位:
     我在1.aspx Page_Load中:Session["x"]="123456";   
       在2.aspx Page_Load中 :Response.Write(Session["x"].ToString());
执行过程:
     1.打开一个ie窗口,输入1.aspx,接着在此窗口中输入2.aspx,可以看到结果:123456;
     2.关闭所有ie窗口,重新打开一个ie窗口,输入1.aspx,再打开一个ie窗口,输入2.aspx,结果提示错误信息:未将对象引用设置到对象的实例。就是在1.aspx中定义的session失效了.
     我发现如果在定义session的那个窗口中,无论在哪个文件中请求session值,都是可以的,包括从这个窗口链接出来的别的窗口.但是在其它任何窗口请求都会报错.
   在asp中不是这样的,多个页面都可以请求session值,这是asp.net与asp的区别之一吗?
如果我想在一个页面定义session值后,接着关掉这个页面,以后在多个窗口的多个页面都要继续使用这个session该如何处理呢?谢谢大家!!!

解决方案 »

  1.   

    同一项目中的SESSION是可以多窗口传递的,但SESSION不能跨项目生存。
      

  2.   

    关闭了窗口就相当于应用程序的结束和退出,Application,Session对象也将自动过期
      

  3.   

    leaohong(无定河):
    如何多窗口传递?
      

  4.   

    你的Session过期设置没问题吧!
      

  5.   

    在同一个ie窗口通过window.open()打开新窗口、跳转、或者更改地址栏都不会有问题,但是从新运行一个ie窗口就不行因此,用户可以在一台机器上同时使用两个不同的身份访问web应用程序满足楼主需要的应该是cookie
      

  6.   

    lizhizhe2000(彬彬) :
    没有问题
      

  7.   

    Eddie005(♂) №.零零伍 (♂) :
    不计划采用cookie
      

  8.   

    1.  QueryString
    2.  Application
    3.  Cookie 
    4.  Server.Transfer(没实践过,例子不少,LZ自己找找吧)
      

  9.   

    leaohong(无定河):
    第一种方法,把值传来传去,终究不安全;
    第二种方法,我要标识每个登陆用户的,用不着application;
    第三种方法,受客户端设置影响太大;
    第四种还没听说过.谢谢!
      

  10.   

    在同一个ie窗口通过window.open()打开新窗口、跳转、或者更改地址栏都不会有问题,但是从新运行一个ie窗口就不行---
    就是这个意思
      

  11.   

    asp可以的.
    难道这就是asp.net安全性高的特征吗?
      

  12.   

    关闭浏览器之后还能记住值, 只能永久储存的机制才行. session是做不到的, asp里面的可以想必是sessionid存为永久性cookie, 所以关闭之后发送请求还可以取得session值, 但asp.net里面的sessionid是会话cookie, 跟浏览器相关, 关了就没了, 所以虽然session可能还在服务器上, 但没有sessionid, 也取不出来. 持久性cookie可行, 至于受客户端设置影响太大, session也是一样, 没有谁用url来存sessionid吧.
      

  13.   

    scow(怡红快绿) ;
    同意你的说法,给个处理意见吧@,哈哈,谢了!
      

  14.   

    cookie一定可以, 楼上也有人说过了, 理论上application应该也行, 不过没试过, 难说.
      

  15.   

    看来只能用cookie了,晚上回去看看.
    谢谢各位.