哎,以前的系统session总是莫名其妙的丢失,放服务器进程里也不行。老是丢失,然后客户端就无缘故的退出了。你设置session时间为1个小时也不行。最后无奈,把session放数据库里了。哈,问题解决了。用了1个星期了暂时没客户反映出问题。也许每个人的需求不同吧,但是我仍旧觉得session放数据库里保险。具体设置方法,不会的跟帖,我回复。

解决方案 »

  1.   

    没做过 session放入数据库的
     是不是在数据库 某个表里建个字段  然后把session值扔进去啊 
      

  2.   

    不明白什么意思?
    Session 保存数据库???
      

  3.   

    哥们 是session放在数据库里??是不是把session的值放到数据库里啊?????????
      

  4.   

    把session放数据库里了
    数据库是最安全的~~~
      

  5.   

    http://blog.csdn.net/cityhunter172/archive/2006/05/14/727743.aspx
      

  6.   

    楼主,session怎么存数据库,不用的时候怎么消除掉呢
    解释一下,说说经验之谈。
      

  7.   

    本来就会丢失,但是这又不是session的问题
      

  8.   

    .net将Session存在进程中,有时修改文件等都会导致进程重起,所以经常丢失
    1、设置为将Session存储在独立的状态服务中。性能损失10-15%
    2、设置将Session存储在SQL Server中 性能损失10-20%
      

  9.   

    其实很简单啊,不用blog里写的那么复杂,可以参照php的discuz的实现,用cookie保存用户信息,查询数据库来验证用户,性能并不差。
      

  10.   

    恐怕有些人不会算账,这里我说的更加实际一些:假设你的程序用十万分之五的时间来执行Session读写(其它时间执行数据库操作、控件操作等等),那么请问这个10%、20%实际对你的程序的影响是多少呢?
      

  11.   

    请指教,正在为session的问题烦恼
      

  12.   

    楼主喜欢装...................................AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.......
      

  13.   

    比尔.盖茨:阿,你帮我解决session的问题了。
      

  14.   

    很抱歉呀,昨天忙忘记看帖了,原来有这么多朋友不知道这个呀。我现在就帖出来方法。一,桌面——开始——运行——cmd
    cd进入到“x:\WINDOWS\Microsoft.NET\Framework\v2.0.50727”
    (不懂怎么操作cmd的,我也无奈了)二,在cmd里继续写:
    aspnet_regsql.exe -S 服务器ip -U 数据库登录名 -P 数据库密码 -d 所要放入的数据库 -ssadd -sstype c
    例如
    aspnet_regsql.exe -S 127.0.0.1 -U sa -P 7654321 -d StudentSession -ssadd -sstype c所要放入的数据库:用你正在做的系统的数据库也可以,也可以写个新数据库。
    例如我那条语句呀,我正在做一个学生系统,有个数据库student。
    我想把session放入StudentSession 这个数据库里。
    你执行完那句话就帮你创建好了这个数据库了,默认里边有几个表,和很多视图与存储过程。三,在web.config里写<sessionState mode="SQLServer"
                sqlConnectionString="server=127.0.0.1; database=StudentSession ;uid=sa ;pwd=7654321;"
                allowCustomSqlDatabase="True"
                cookieless="false"
                timeout="20" />
    还有不懂的就email给偶:[email protected]
      

  15.   

    执行完这些之后,你对session的操作,就自动有了对这个数据库的操作了。既然是自动的,当然你无须理会它,如何insert,你退出时如何delete了。它自动完成了。
      

  16.   

    最基本的知识,ASP.NET中几种配置的方式 1.存储在远程服务器中 2.存储在数据库呵呵 很多人貌似都很意外。。
      

  17.   

    一下session存储一共有三种方式放在cookie里面存在客户端存在系统进程还有就是这个了,放在数据库里面,各有利弊
      

  18.   


    ——————————————————————————————————————————
    同志们,这个就是全部操作方法呀。
    没有代码,代码都不用写,就这么按步骤做就可以了。
    在c#没有一句相关的代码。仅在web.config里设置下就可以了。
      

  19.   

    session丢失是因为你用了IIS6.0的NET farm....
    建议开启一个线程.....
    如果要用NET FARM..那么请启用状态服务器,IIS的ASP.NET配置那里改掉,不用InProcess Session另外两个就是Session State Service
    和SQLserver另外你可以自己实现Session接口.用MemChached之类的C语言缓存....在分布式下面非常有优势...呵呵前段时间也遇到这个鸟问题了
      

  20.   

    这样子,如果存的话session["user"]=***;
    这样自动就更新到数据库里了。
    但是如果取得时候呢?取得时候是取session里的还是取数据库里的。
     
    还有个问题:你是因为session经常丢失而采取此方法的吧?
    如果session丢失了,那么数据库中的记录是不是也跟着清空了?
    那如果是的话,你这样根本没解决session丢失的问题啊?
      

  21.   


    每次取session,都会执行一个存储过程。
    虽然注意性能上有损失,但是安全性提高了。至于session丢失的问题?既然存放到数据库了,就不存在丢失的问题了。
    当然有过期时间,你可以在web.config里设定了。
      

  22.   

    那这总有个同步的问题吧?是session去同步数据库,还是数据库去同步session?
      

  23.   


    那为什么你保存到数据库里,session就不丢失了呢?
    session是放在服务器内存中的,
    是不是用你的方法后,session的存取就到数据库中了,就不在服务器的内存中了,所以就不会存在丢失的问题了?
      

  24.   


    怎么操作,数据库才会自动插入一条记录?
    session["?1"]=?2;问号1是什么?问号2是什么?不对?那该怎么写?
      

  25.   


    开始——运行——cmd 
    cd  C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 
    说明:
    cd:Change Direcory
    C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727(安装.net framework的路径)
    改变目录后,继续输入
    aspnet_regsql.exe -S 数据库服务器ip/服务器登录名 -U 数据库登录名 -P 数据库密码 -d 所要放入的数据库 -ssadd -sstype c 
    例如 
    aspnet_regsql.exe -S 127.0.0.1 -U sa -P 7654321 -d StudentSession -ssadd -sstype c 
    保存session的数据库可以使系统正在使用的数据库,也可以是其它数据库。
    执行上面语句,会创建StudentSession数据库,以存放session。 
    配置web.config
    <system.web>
    <sessionState mode="SQLServer" sqlConnectionString="server=127.0.0.1;database=StuSession;uid=sa;pwd=7654321;" allowCustomSqlDatabase="true" cookieless="false" timeout="20"></sessionState></system.web>
      

  26.   

    aspnet_regsql.exe -S 127.0.0.1 -U sa -P 7654321 -d StudentSession -ssadd -sstype c 
    你这句可不可以对远程的服务器用呢?   远程的服务器能不能这样?   
      

  27.   

    asp.net本来就提供三种保存session的方式:进程内;进程外;数据库
    我是来拿分的~
      

  28.   

    请问写这个怎么理解:二,在cmd里继续写: 
    aspnet_regsql.exe -S 服务器ip -U 数据库登录名 -P 数据库密码 -d 所要放入的数据库 -ssadd -sstype c 
    例如 
    aspnet_regsql.exe -S 127.0.0.1 -U sa -P 7654321 -d StudentSession -ssadd -sstype c 
      

  29.   

    <sessionState mode="StateServer" stateConnectionString="tcpip=localhost:42424" timeout="100"></sessionState>是否这样就可以了..
      

  30.   


    什么怎么理解,怎么打开运行,不会?
    还是怎么进入cd进入到“x:\WINDOWS\Microsoft.NET\Framework\v2.0.50727” 不会呢?
      

  31.   

    msdn 上面session介绍的很详细了
      

  32.   

    楼主,Session["User"]=userinfo;
    不能插入记录。
      

  33.   

    楼主!为什么ASPStateTempSessions表中created列的时间对不上呢!比本机实际时间晚4个小时
      

  34.   

    为何不用进程外session呢.速度可是钢钢的
    启动StateServer
      

  35.   

    设置成StateServer  放到服务器上,会不会有点不安全啊!很迷惑
      

  36.   

    设置StateServer在Web.Config配置一下