存放session中的变量是有生命周期的.一般1分钟左右会检测一次.测量时间可以使用Global.asax中
Session_Start  Session_End 来测量系统多长时间来检测session是否过期时间.
设置 seession 过期时间为30秒. 如果系统为1分钟为检测一次.则1分钟才触发Session End事件.如果session过期则销毁.-------------------------------------------------------------------------------------
在session存储设置为存储于sqlserver中的WEB应该程序中。是以文本形式存在放数据库.把对象转换成文本形式.需要类必须为可序列化.两种存储机制不一样,前一种是存放在服务器内存中,后一种以持久化方式存放在数据库中。

解决方案 »

  1.   

    Session 也会发送至客服端吧..
    ..不太清楚。。up
      

  2.   

    IIS进程来回收SESSION..服务器繁忙的时候..IIS的进程会自动回收Session..所有有的时候Session的值会丢失.请尽量少使用Session.---------------------------------------------------------
    结果显示为"changed" 由此我得出结论,SESSION中存的为一个地址; 但另一种情况又让我无法解释?? 
    在session存储设置为存储于sqlserver中的WEB应该程序中。我将一对象存于Session中,对象的类必须为可序列化的,既然只是存一个地址的话,为何要要求类可序列化,这让我感觉SESSION中存储又应该是数据本身 ----------------------------------
    当会话存储在SQL SERVER数据库中,每个WEB请求结束时在客户端的SESSION集合中序列化并保存所有对象..当客户端重新访问服务器时..相关的辅助进程从状态服务器中以二进制流的形式检索这些对象.请它们反序列化为实时实例,并将它们放置回对请求处理程序的新Session集合对象中.
    -------------------------------
    SESSION的三种存储模式要理解清楚...
      

  3.   

    IIS进程来回收SESSION..服务器繁忙的时候..IIS的进程会自动回收Session..所有有的时候Session的值会丢失.请尽量少使用Session.---------------------------------------------------------
    结果显示为"changed"由此我得出结论,SESSION中存的为一个地址;但另一种情况又让我无法解释??
    在session存储设置为存储于sqlserver中的WEB应该程序中。我将一对象存于Session中,对象的类必须为可序列化的,既然只是存一个地址的话,为何要要求类可序列化,这让我感觉SESSION中存储又应该是数据本身----------------------------------
    当会话存储在SQL SERVER数据库中,每个WEB请求结束时在客户端的SESSION集合中序列化并保存所有对象..当客户端重新访问服务器时..相关的辅助进程从状态服务器中以二进制流的形式检索这些对象.请它们反序列化为实时实例,并将它们放置回对请求处理程序的新Session集合对象中.
    -------------------------------
    SESSION的三种存储模式要理解清楚...
    ______________________________________________________________________________________
    多谢回答,在用SQLSERVER存储时,我们到SESSION中的对象取出,做以下操作:userEntity u=(userEntity)Session["user"];
    u.Name="changed";而不写以下语句:
    Session["user"]=u;
    也就是说不显式的把对象再存回SESSION变量中,但我在另一个页面重新访问SESSION变量,得到NAME属性的值也还会变成"changed",,这是为什么呀??难道
    userEntity u=(userEntity)Session["user"];
    u.Name="changed";
    这样的语句就可以导致SESSION机制更新存储于SQLSERVER中的序列化后的值吗??按我的理解,应该要显式的写出
    Session["user"]=u;这样的语句,才会让SQLSERVER更新序列化值呀??请高手解答
      

  4.   


    userEntity u=(userEntity)Session["user"]; 
    u.Name="changed"; 而不写以下语句: 
    Session["user"]=u; 
    也就是说不显式的把对象再存回SESSION变量中, 但我在另一个页面重新访问SESSION变量,得到NAME属性的值也还会变成"changed",,这是为什么呀?? 难道 
    userEntity u=(userEntity)Session["user"]; 
    u.Name="changed"; 
    这样的语句就可以导致SESSION机制更新存储于SQLSERVER中的序列化后的值吗??按我的理解,应该要显式的写出 
    Session["user"]=u;这样的语句,才会让SQLSERVER更新序列化值呀??请高手解答 --------------------------------------------------------------------------------------------
    Session["user"] 中存放的是实体对象引用地址.userEntity u=(userEntity)Session["user"]; 
    u存放的也是实体引用地址  与 Session["user"] 存放的是一致的.u与Session["user"]都是指向一个内存地址.进程检测到Seesion管理的对象内容发生改变.就会序列化.