知道要先串行,但是有的类是引用的DLL中的.
没有源代码,不能串行的.另外.我试过cookieless=true.
就这样就能稳定吗?
好象不可以的.

解决方案 »

  1.   

    为什么总见这么多人问Session丢失的问题,我怎么从来没碰到过呢??会不会是因为用了太多的Session,或者内存太小了??
      

  2.   

    很多情况下不是Session的问题,而是.net自带的垃圾自动回收功能造成,由于.net下所有的托管代码都是由垃圾回收器自动回收的,而你存在Session中的对象由于在一段时间内没有操作,很多都已属于垃圾回收的范围之内。实际上并不是Session的问题,因为Session中保存的对象靠的也是引用关系,对象所占的资源被释放了,自然找不到Session中的内容了。
      

  3.   

    的确,我在SESSION中放的东西太多了.
    也许和这个有关系吧.说来说去,这么多版主都没有一个来看看.
      

  4.   

    to wacle([Smile!]) :
    对你的说法我表示怀疑,即使Session中保存的对象靠的也是引用关系,也不可能在Session尚且存活的情况下,将Session中的对象回收掉,微软能犯这样明显的逻辑错误?
    你说的可有什么根据,或只是自己的猜想?
      

  5.   

    合用两种方式来解决Session问题,即:除Session之外还使用数据库存贮方式,判断Session为空,则立即用数据库数据,再回存为Session。
      

  6.   

    我的Session也经常丢失,不知是什么原因!
      

  7.   

    www.brinkster.com能不能用session呢?只要出现回送或页面跳转session就丢了,请星星指教,先谢谢了
      

  8.   

    session 中最好不要存太多的东西,因为每个用户都在服务器上有自己的一个Session 空间,用户多了以后,对服务器的内存消耗很大的,当服务器的内存消耗过大时,就会自动回收一部份内存,这样缓存在服务中的数据就很容易丟了
      

  9.   

    但是不用session还能用什么东西呢?
    页面间传递数据还有什么能更好一些.
      

  10.   

    我觉得Session不能滥用,
    如果你的Session里保存的对象太多太大,出现问题是必然的
    我都很少使用Session的,一个项目Session不会超过十个
      

  11.   

    to binziwa(北风):
    以上纯属小弟个人想法,因为小弟觉得,微软在设计出自动垃圾回收功能的同时,也保留了强制性释放内存的方法,我觉得这可能不光光是处于对不安全代码的考虑,在.netFCL当中有很多的对象存在着较深的层次关系,有些对象可能是非托管的,但里面依然包含托管代码,而这里面的托管代码会不会自动执行垃圾回收功能呢?还有运行在CLR上的对托管对象的TRACE跟踪,它的判断标准是不是只有一个,是不是还与时间有关系,这些我们都不是很清楚。
    我在开发的过程中,对保存在Session中的对象做了比较严格的控制,尽可能少地用SESSION,对于在其中存放大数据量的数据,我并不赞同,我的做法是保存这些数据的查询状态,宁可多访问一次数据库;在某些比较特别的情况下,如果需要存贮比较大的数据,也会在利用完之后,设计一套方法来清掉其中的内容。对于特别关键的信息我是不会用SESSION来存储的。
      

  12.   

    Session相关问题:
    1.Session丢失情况?
    一:有些杀病毒软件会去扫描您的Web.Config文件,那时Session肯定掉,这是微软的说法。
    二:程序内部里有让Session掉失的代码,及服务器内存不足产生的。
    三:程序有框架页面和跨域情况。
    第一种解决办法是:使杀病毒软件屏蔽扫描Web.Config文件(程序运行时自己也不要去编辑它)
    第二种是检查代码有无Session.Abandon()之类的。
    第三种是在Window服务中将ASP.NET State Service 启动,【并设置Web.Web.config的sessionState|mode为StateServer】
    还有一种情况是您用资源管理器打开的还是IE打开的。
    最好用IE打开试试。
    2.Session被串?
    Seesion是存储在服务器端的,它是使用客户端和服务器端共享一个关键字,一般情况下客户端使用cookie,服务器用这个cookie来识别seesion,如果seesion存在客户,他的安全性就得不到保障。一般来说就不会把用户登陆信息存储在seesion中了 <sessionState 
    mode="InProc"//这里改为StateServer 【把进程内状态改为进程外状态】 注意要启动 aspnet_state 服务
    stateConnectionString="tcpip=127.0.0.1:42424"
    stateNetworkTimeout="600"
    sqlConnectionString="data source=127.0.0.1;user id=sa;password="
    cookieless="true" //这里说明不需要存在客户端 ,改为false试试?
    timeout="60" 
    />
    3.asp与asp.net共用Cookies或者Session
    asp.net //asp.net中设置COOKIES名称是不能有“_”。
    this.Response.Cookies["MyCookies"] .... 设置
    this.Request.Cookies["MyCookies"]  .... 获取
    asp
    Response.cookies("MyCookies")
    Request.cookies("MyCookies")
    可以共享
    但是Session好像不行吧
    4.在Session声明对象
    CheckBox CHKBox;
    Session["CB"]=CHKBox;
    使用时:
    (CheckBox)Session["CB"];
      

  13.   

    我也遇到这个问题,一个星期了一直没有解决。
    好像符合wacle([Smile!])的说法,经过了大约20分钟,再次请求,会直接转向登录界面。可能此时对应原来客户端的Session已经不再存在了(被强制回收?)。如果真是这样的话,如果超过20分钟再次请求的话,.net岂不是会因为已经强行关闭该会话,而导致转到启动页面?这样即使用cookie代替session,也行不通?!有什么解决的办法吗??
      

  14.   

    Session 这烂东西,我都发过牢骚了,我就不相信它真的没问题!
      

  15.   

    我遇到同样的问题,因为我使用的是
    zonealarm防火墙,我关闭它就没用任何问题了。
      

  16.   

    如果使用了StateServer和SqlServer模式来管理Session.
    就不会出现防火墙之类的问题了.但是也极大的降低了系统的性能.
      

  17.   

    这个问题,我可能马上就要遇到了!
    我现在正在做一个项目,用户登录后可能要把用户的相关信息放到Session中(比如权限,基本信息等,我想我所要存储的这些东西不比楼主少),如果真按各位所说的Session会经常丢失,那用什么来保存这些信息呢。Catch,Application可以吗,请各位高手指教!
      

  18.   

    Application应该是不行的,它是所有用户都共享的.
    其实我想了这么一个方法,通过全局变量.比如hashtable来管理,应该是可以的.
      

  19.   

    jinghujing(壶中美景) ( ) 信誉:100  2004-03-25 17:33:00  得分:0 
     
     
      Application应该是不行的,它是所有用户都共享的.
    其实我想了这么一个方法,通过全局变量.比如hashtable来管理,应该是可以的.
      ____________________________________________________请详细说明一下可以吗。
     
      

  20.   

    微软说的原因
    CAUSE
    Session state data is lost if the AppDomain or the Aspnet_wp.exe process (or the W3wp.exe process, for applications that run on Microsoft Internet Information Services [IIS] 6.0) is recycled. Generally, the AppDomain is restarted based on several factors: 
    Various attributes (for example, the memoryLimit attribute) have particular settings in the <processModel> section of the configuration file.
    The Global.asax or the Web.config file was modified.
    The Bin directory of the Web application was modified.
    Virus scanning software touched some .config files.For additional information, click the article number below to view the article in the Microsoft Knowledge Base: