程序配置文件:
<sessionState 
            mode="InProc"
            stateConnectionString="tcpip=127.0.0.1:42424"
            sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
            cookieless="false" 
            timeout="1000" 
    />但有时6,7分钟就失效了,需要重新登陆。
有时一重新登陆,所有的人都要重新登陆。请问:怎样设置session在7,8小时之内都不超时呢?
    

解决方案 »

  1.   

    以前设置很大的,结果出现w3wp.exe出错,服务器都要重起。
    iis中设置了1000分钟,就变成了有时6,7分钟就失效了,需要重新登陆。 
    谁告诉我要怎么弄?
      

  2.   

    我是用的Cookie,没有敢用Session,他一直都不稳定,很烦,所以只好用Cookie了。
      

  3.   

    谁说Session集合中的数据丢失就是超时呢?在生产服务器上,几乎90%以上都不是因为超时而丢失,所以你去搞那个参数的设置没有意义。
      

  4.   

    Session集合中的数据丢失是系统自我维护的结果,不能改变它就“接受它”吧。编程时考虑到这个问题,回避之。
      

  5.   

    另外,补充一下,你可以看看 mode="InProc" 这个参数的其它2中取值的含义。不过我并能保证我拥有web服务器,所以我从来都不用后两种参数。如果你可以保证,就可以使用状态服务器或者SQL Server做服务。不过,这两种方式都要求你为写入Session集合的所有数据对象都额外地确保它可以序列化(否则你就需要修改你的对象类设计)。
      

  6.   

    恩 session 丢失的原因太多 你去设置那个时间意义不大
       如果可以的话 建议楼主用cookie 吧
      

  7.   

    我改用过StateServer,但修改一数据时,传递数据老显示第一条的数据,不是被选中的记录。
    我一直做c/s的。
    真不知道怎么办?
      

  8.   

    改为cookie吧 
    把时间设到最大DateTime.MaxValue
      

  9.   

    这个网站都用了好多年了,是用vs2003开发的。
    程序里面好多地方都是用session if (Session["RowFilter_T_BG_Bgdj"] != null)
    {
    filter = Session["RowFilter_T_BG_Bgdj"].ToString();
    }
    if (Session["Sort_T_BG_Bgdj.Column"] != null && Session["Sort_T_BG_Bgdj.Direction"] != null)
    {
    order  = Session["Sort_T_BG_Bgdj.Column"].ToString() + " " + Session["Sort_T_BG_Bgdj.Direction"].ToString();
    }          # region HandCode_LoadData2
    # endregion Session["DT_T_BG_Bgdj"] =
    DAL.BG.T_BG_Bgdj.GetTopDT(1000, filter, order);
    Session["DTCount_T_BG_Bgdj"] = DAL.BG.T_BG_Bgdj.GetDTCount(null);
    Session["ViewCount_T_BG_Bgdj"] = DAL.BG.T_BG_Bgdj.GetDTCount(filter);
      

  10.   

    Session["DT_T_BG_Bgdj"] = 
    DAL.BG.T_BG_Bgdj.GetTopDT(1000, filter, order); 
    这些也都用cookie吗?
      

  11.   

    说实话吧 一个项目里面session 用得多的项目不是好项目!
      

  12.   

    楼主你的要求也太高了7,8个小时不超时,我想的话,用Cookie,session很难保证。session的丢失并不一定就是超时引起的。比如应用程序重启,内容泄露等等原因
      

  13.   

    不是我要求,是用户要求。若是我做这个系统,我就用c/s了。我要把它改成b/s,别人都不同意。
    那我只有改咯。哎`` 公司就我一个程序员,还是个女孩子。
      

  14.   

    可以考虑SESSION 和 COOKIE交互使用.
    当SESSION丢失的时候去访问COOKIE来刷新SESSION.
    有点多余.还不如直接用COOKIE
      

  15.   

    弄个隐藏的iframe每隔一段时间 发送下请求session永远不会超时
    除非用户关浏览器
      

  16.   

    上面都说用cookie 请给我个理由为什么要用cookie?我不认为cookie有多好,当然在保存一些非重要的信息可能行的通但是你如果想用cookie代替session 这个想法太疯狂(因为session 一般保存的都是些较为重要的信息,而且是在线,安全的至少比cookie安全)
      

  17.   

    楼主现在用的是Session,如果改造成cookie可能会改动比较多。
    一个成本比较低,改动比较快的方法是:页面上嵌入一个iframe,设置其size和width,height=0,也就是说对用户不可见
    里面挂一个小页面(这个页面主要是保持一个状态的激活,用简单的代码段即可),设置为自动刷新。

    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <meta http-equiv="refresh" content="5"> 

    每5秒刷新一下自己,这样可以保证session一直是激活状态。当然,用户如果关闭了窗口那么肯定就无效了。
    另外因为是因为增加了对服务器的请求,也需要综合考量
      

  18.   

    session丢失的问题很多,使用数据库保存
    <sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;user id=sa;password=" cookieless="false" timeout="1000" />
      

  19.   

    不要把太多数据塞到dataset 否则session会被挤掉
      

  20.   

    不过,我都把Session存到数据库去了
      

  21.   

    session的不足之处就是容易超时丢失,楼主可以session和cookie相结合的办法,就像22楼兄弟说的,或者用28楼的方法,内嵌一个看不见的iframe,定时刷新页面,以保证session不过期