我在网站后台使用静态变量保存一些常用的值
Public Class dRegSms                               
Public Shared RouteHm As New Hashtable(100)                                          ’其他赋值方法
End Class发布到IIS上以后,每次IIS自动进行回收,开始认为会把所有静态变量也回收掉的,后来跟踪了些时间,发现RouteHm 不为空,但他的Count的值为0,也就是说里面存的数据没有了
这是什么情况啊?有没有什么办法让里面的object保留住啊?

解决方案 »

  1.   

    IIS关闭空闲工作进程,或者应用程序池回收老工作进程的时候,进程都会被关闭,你那些静态的东西自然就还原到初始状态了。不是没人遇到,而是你太大惊小怪了。要保留住,那么你需要自己持久化,或者使用可持久化的会话来保存。使用会话放太多数据的话开销很大,不如自己持久化到磁盘。
      

  2.   

    程序被重启了。你要有保护机制的,先判断是否为空,如果为空就从数据库中取。还有建议用cache可以设置依赖。数据被外部系统更新后能够知道
      

  3.   

    你要搞清楚,回收的感念是什么啊
    iis里面的回收和。net的垃圾回收不是一个概念
      

  4.   

    想问下,IIS里面,回收工作进程和停止工作进程后,再次访问都会触发application_start吧
      

  5.   

    对的回收工作进程触发application_start
    另外,asp.net网站默认一段时间没人服务,也会导致触发application_start的