我明明把session 有效期设置成600---为的就是怕用户掉线,还得重新登陆
可是我测试时有时候几分钟就说我没有权限--因为我没有登陆,为什么session会不准确呢?有时候时间长,有时候时间短。。
看了看书,说能在SQL数据库里存储 session,请大家详细告诉我如何用数据库存session呢?
就是怎么配置<sessionState>呢?
小菜鸟先谢谢大家了!!

解决方案 »

  1.   

    可以在C#代码里直接设置Session.TimeOut=600;//按分钟计算
      

  2.   

    session默认时间为20分钟,你如果想延长时间可以在webconfig中修改
    如: <system.web>
        <sessionState timeout="300" mode="InProc"></sessionState>
    </system.web>
      

  3.   

    <sessionState mode="SQLServer" sqlConnectionString="data source=SQL2000DB;user id=sa;password=" timeout="20000000"/>
      

  4.   

    session 默认的方式一般都会丢失!时间设置再长也没用!最好持久化!
      

  5.   

    应该是你的程序代码有问题(占用资源过多),导致了iis_isapi进程(因无法获取更多的系统资源)重启,所以session丢失
      

  6.   

    将Seesion存入StateServer
    <sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
    cookieless="false" timeout="300" />
    需要打开ASP.net状态服务.另外Session中存储的数据类型必须是可序列化的.http://www.builder.com.cn/2008/0323/780027.shtml
      

  7.   

    session很不稳定,很容易丢失.
    比如app 进程重启就可以导致session,application等对象丢失你要做web最好不要用session去验证用户有没有权限.你可以选择forms验证.
      

  8.   

    把session放在一个静态得公共类里面。这样可以防止丢失。
      

  9.   

    <system.web> 
        <sessionState timeout="300" mode="InProc"> </sessionState> 
    </system.web>把mode换成StateServer,Session保存在服务器上稳定一些,但是要占服务器资源,还需要打开状态服务