我有个网站运行在wins2003的系统上,然后session丢失得很厉害。一下就丢,不用5秒就丢大家遇过吗?怎么解决呢。
200分的帖子。大家都应该多多少少有遇到。多讨论一下。版主也支持下。

解决方案 »

  1.   

    不会吧,我也用win03没出现过啊
      

  2.   

    iis有Session的bug,MS至今未能解决
      

  3.   

    那重装IIS是不是有可能解决啊!?!
      

  4.   

    <sessionState timeout="30"  mode="StateServer" />
      

  5.   

    首先在IIS中设置会话过期时间,检查有没有session.abandon(),我也遇到过这样的问题,最后还是使用cookie解决,但是大量的使用cookie显然不是一个理想的选择,我感觉这个还是在服务器上作文章,仅仅在程序上找错误可能是不会有结果的,还是看看服务器的设置ba
      

  6.   

    感谢hrabeyond提供的链接,我详细看看。
      

  7.   

    还有一个也不能忽视的原因是硬件,web服务器的内存能多大尽量多大,session是个非常好资源的东西,我做的程序也出现过丢session的问题,但是到了客户那里,客户的机器硬件配置很强,几乎没有发生session丢失的问题。   
      另外,程序中尽可能的少用活着不用session,现在多位采用存储到加密文件中的技术,减少这种问题的发生,同时对客户服务器的要求也降了下来。
      

  8.   

    很正常。既然要使用web服务器,而web服务器本来就是经常靠回收应用程序来自我维护的,那么当初就不应该只依赖于Session集合来保存数据,从一开始写asp.net程序就应该假设每隔5分钟就会丢失Session集合的数据一次。msdn中也对应用程序状态管理,Inproc以及其它管理方式的异同,等做了含糊倒是全面的说明。写asp.net入门书的人则根本是只抄袭msdn最肤浅的部分,当然不会仔细告诉你这些状态管理问题。当你自己买服务器,这个情况也许可以很少发生。如果你只是在开发机器上测试,可能看不到这个情况。但是如果你跟好几百人一起租一台服务器,那么这种情况经常发生。
      

  9.   

    Session里怎么设置的,看看吧,不过按理说应该是默认半小时的
      

  10.   

    我本机xp测试好好的
    挂上win2003 就session出错 
    同样没办法解决
      

  11.   

    另外:   
      一:有些杀病毒软件会去扫描您的Web.Config文件,那时Session肯定掉,这是微软的说法。   
      二:程序内部里有让Session掉失的代码,及服务器内存不足产生的。   
      三:程序有框架页面和跨域情况。   
      第一种解决办法是:使杀病毒软件屏蔽扫描Web.Config文件(程序运行时自己也不要去编辑它)   
      第二种是检查代码有无Session.Abandon()之类的。   
      第三种是在Window服务中将ASP.NET   State   Service   启动。
      

  12.   

    <authentication mode="Forms">
    <forms name="loginFrom" loginUrl="login.aspx" defaultUrl="index.htm" protection="All" path="/" timeout="36000"/>
    </authentication>
    可以采用这种方式进行session的判断 身份票不过期 你就从身份票里面更新session的内容
      

  13.   

    1.IIS是可以设置的
    2.代码里面也是可以设置的,你是否设置,为什么5秒就T出了
    3.跟系统,iis没问题(正确安装iis情况下),不然就是你程序问题
      

  14.   

    你可以吧Seesion的存储方式改成StateServer,然后去把ASP.NET State Service服务开启
    希望能帮到你
      

  15.   

    Session跟cookie 一起用啊 
      

  16.   

    在IIS中配置自己的应用程序检查下配置特别是工作进程的回收,另外在网站的配置中检查下Session失效时间设置
      

  17.   

    建议重新配置一下环境,或则把session定时试试呢
      

  18.   

    很明显,用Cookie的有点远远大于Sesion
      

  19.   

    我也是2003啊,貌似没出现过这种情况!通常都是正常过期的!不过win2003确实感觉用着怪怪的!不爽
      

  20.   

    这样做:
    1:把session保存到aspnetStateService中,并将这个服务启动并设为自启动(默认不启动,手动)。
    2:把session保存到SQLServer中。
      

  21.   

    1. 先看看Session存放的方式是不是StateServer,如果是Inproc确实容易丢失,网上有多篇文章说这个问题
    2. 微软的Forms验证用的也是Cookie,不也安全着么
      

  22.   

    不知道你用session保存什么信息呢?如果只是用户信息,那么当你访问一个页面的时候,首先把用户信息的值保存到隐藏控件中,每次访问页面时先判断session丢了没,丢了,就读取隐藏控件中的值,从新访问绑定?web.config存储方式改成StateServer,应该是没问题了,服务器最好自己买的,性能牛X点。
      

  23.   

    我一般这样做
    Session保存登陆状态  COOKIE保存加密过的帐户和密码
    当Session丢失时 提取COOKIES信息自动登陆重新建立Session
      

  24.   

    应该是服务器的原因,还有就是,session有三种保存方式,你不要放在内存里面,给放到数据库里面或者状态服务里面试试
      

  25.   

    session丢失是你的程序有问题,可能是那个地方有错误造成的session丢失,解决的方法还是从程序本身入手,不应该是配置的问题!
      

  26.   


    怎样查看 存放方式?如何把session保存到aspnetStateService中?
      

  27.   

    不会是你的session的时间改了吧,改下时间、
      

  28.   

    Session的缺点就是易丢失!
    不好,Cookie也不好, 用户浏览器禁用了Cookie 
    那什么好呀    
      

  29.   

    禁用了Cookie? 那Session一样用不了
      

  30.   

    当然可以参数化Session 不过显然没有人喜欢
      

  31.   

    我经常遇到Cookie丢失的情况。cookie里面如果保存的数据多的话,就有可能造成丢失,但是过一段时间可能就会恢复。如果cookie的问题解决的session 的原因应该一样好解决。
      

  32.   

    1,启用session的state server模式。依赖于asp.net状态服务。
    2,如果要求更高,采用sqlserver模式,session存在数据库里面,这种可靠性高。
    这个模式需要依赖于SQL SERVER AGENT服务。
      

  33.   

    session丢失原因很多
    删除目录,更改Global.asax文件,重启IIS等等,sesson都会丢失 
    IE中的cookie数量限制 
    Session的时间设置 
    使用StateServer模式保存session或数据库方式 
    做Session读写日志,每次读写Session都要记录下来,并且要记录SessionID、Session值、所在页面、当前函数、函数中的第几次Session操作,这样找丢失的原因会方便很多 
    如果允许的话,建议使用state server或sql server保存session,这样不容易丢失 
    在global.asa中加入代码记录Session的创建时间和结束时间,超时造成的Session丢失是可以在SessionEnd中记录下来的。 
      

  34.   

    应用程序域所在的进程有通信吗?理解一下webfarm 和webgarden
    在看一下服务器的配置
      

  35.   


    这就可以了,记得启动服务器的asp.Net状态服务
    asp.net中,只要有对网站内的文件目录进行删除操作,如果session是保存在inproc中的,基本上100%丢失session
      

  36.   

    首先这种已经被应用了几年的技术你不要抱有侥幸心理,不可能有BUG。你要确定两点:
    1、是不是Session丢了?
    2、为什么丢了?如何丢的?何时丢的?确定是不是丢失了Session恐怕比较容易,Session里面某个值存进去取出来没了。回答第二个问题比较困难:
    使用性能监视器,看看Session的计数机变化。
    同时简化问题,在简单场景下是否存在这个问题,慢慢复杂化问题,还原真实场景,找出问题根源。
      

  37.   

    Session是有丢失的BUG 但是也至于像楼主这样严重的吧
      

  38.   


    补充说明一下:这种session存储在系统进程中,就算把IIS关闭了,session也不会丢失,但速度上比intro要慢点
      

  39.   

    没遇到过。一般就存个用户名。自己的服务器。没见到丢失。除非动了IIS或程序。
      

  40.   

    <sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424" stateNetworkTimeout="10" sqlConnectionString="data source=127.0.0.1; Integrated Security=SSPI" cookieless="false" timeout="30"/>
      

  41.   

    看一下Session丢失是不是与错误有关系吧,看看IIS日志里的东西,应该能够得到些线索还有,也可以看看单独给网站配置个应用程序池
      

  42.   

    在session中设置时间,我们都是这么做的
      

  43.   

    StateServer STATE 换这两种模式。。可以定义保存时间的。相对比较稳定。
      

  44.   

    MS 都解决不了的, 
       建议你用cookies 来存储,虽说不安全吧, 但也是解决的方法啊!
      

  45.   


    如果客户端禁用了cookie,每个地址后带个sessionID,肯定也不安全啊,所有很多网站不支持COOKIES是不允许访问的。