为什么重启IIS/应用程序池回收时静态变量数据丢失而不是实例?

Gur*_*epS 1 c# iis static

为什么如果我重新启动 IIS,静态变量的数据会丢失(例如在 Sharepoint 中的 webpart 属性中),但在实例变量中却不是这种情况?

这是使用 IIS7 和 Windows Server 2008 R2 x64。

谢谢

cod*_*nix 5

如果进程重新启动,所有变量都会丢失。但是:当池被回收时,IIS 会自动将会话变量序列化到另一个进程内存中。当池重新启动时,会话变量将被反序列化并因此被恢复。这是通过 .NET 序列化功能完成的,这意味着所有会话变量都必须使用 [Serialized] 属性进行标记,否则您会得到运行时异常。