应用程序状态是一个能够被 ASP.NET 应用程序中的所有类都可用的数据贮存室。应用程序状态被存储在服务器的内存中并且速度要比从数据库中存储并获取信息时要来得更快。与会话状态不同,会话状态只指定了单独的用户会话,而应用程序状态会作用于所有的用户和会话。因此,应用程序状态在存放少量经常被使用并且不会在用户之间被更改的数据存储的时候是比较适用的。
应用程序状态被存储在 HttpApplicationState 类中,在用户第一次访问应用程序中的 URL 资源的时候,一个新的 HttpApplicationState 类的实例将会被创建。关于更多信息,请参考:[ASP.NET 应用程序状态概览]。
应用程序状态把数据当成 Object 类型进行存储。因此,在把没有进行序列化的数据存储到应用程序状态中的时候,你必须在获取数据的时候把它们转换成适当的类型。尽管你能够转换一个 null(在 Visual Basic 中是 Nothing)对象,但是如果在你尝试通过其他的一些方式来使用一个并不存在的应用程序状态实体(例如,检查它的类型)的时候,将会抛出一个 NullReferenceException 异常。
过程
从应用程序状态中读取值
检测应用程序变量是否存在,然后在你访问的时候把变量转换成适当的类型。
如下所示的代码范例获取了名为 AppStartTime 的应用程序状态值并把它转换成一个名为 appStateTime 的 DateTime 类型。
if (Application["AppStartTime"] != null) { DateTime myAppStartTime = (DateTime)Application["AppStartTime"]; }