你的静态变量的值会一直保存,直到你的应用程序池被回收。当IIS自动回收应用程序池后,值就丢了。
我没有设置自动回收,默认就会自动回收吗
@拖鞋王子: 我在应用程序池的高级设置里找到了: 回收-固定时间间隔(分钟) 他的描述是:[time]一个时间段(以分钟为单位),超过该时段后,应用程序池将回收,值为0意味着应用程序池不会按固定间隔回收。
设置成0就不会自动回收了吧
@拖鞋王子:设置成0,如果你的程序有内存泄漏,那么会导致w3wp.exe占的内存一直变大,加上得不到回收,最终吃光内存,应用程序池crush,最终service unavalaible。最好的方法还是持久化。
静态 变量 会 一直 保存哦。
会回收静态变量
我要一直用这个静态变量里的数据,有什么好方法吗
@拖鞋王子: 持久化,存在文件或数据库中
@dudu: 我在静态变量里存的是List或Dictionary,能不能序列化成json后存到文件
@拖鞋王子: 可以,建议用Json.NET
@dudu: Json.NET是不是就是Newtonsoft.Json
@拖鞋王子: 就是这个
@dudu: 3Q 我去试试
@拖鞋王子: 再帮我看看我在下面的回复吧,是不是把那个设置成0就不会被回收了
可以考虑使用const或者static readonly关键字.
能具体点吗,我想要的是静态变量可以一直使用,能达到这个效果吗
@拖鞋王子:
public const string DateTimeFormat = "yyyy-MM-dd HH:mm";
public static readonly string Domain = WebConfigurationManager.AppSettings["domain"];
绝对可以.
iis没有回收,没有重启,静态变量一直在的。