私人财产的寿命

时间:2015-12-20 07:52:16

标签: c# asp.net-mvc

试图找到答案,但我没有找到任何信息...

我基于以下示例构建了一个完整的属性:

private static Foo _foo;
public static Foo foo {
get 
{
   if (_foo!= null) 
      return _foo;

   //else do some logic and fill _foo;
   _foo = ....;
}};

问题是,根据页面的生命周期_foo何时为空? 在第一次加载时,它将为null但是什么时候再次为null?在回收?在iisreset?或页面重新加载?

此属性位于类lib(外部dll)

1 个答案:

答案 0 :(得分:2)

  

根据页面的生命周期,_foo何时为空?在第一次加载时,它将为null但是什么时候再次为null?在回收?在iisreset?或页面重新加载?

它没有绑定到Page,在MVC实例中数据是相对于Request而静态数据绑定到Application实例。

每次重新启动应用程序时,即在IIS回收或重置时,它都将为空。

这使得static数据在服务器应用程序中相当可疑。它可以用作一种简单的缓存形式,但请注意,这并没有“向外扩展”。每个服务器都有自己的副本。