什么时候重置应用程序对象?

When is Application object reset?

如果我在 Application 对象中放入一个字符串,它何时会被删除?

我想在其中缓存一个连接字符串,但如果我更新它,我将需要替换对象中的实例。

应用程序级变量非常适合存储 Web 应用程序配置信息。

它们能持续多久?

Application 变量在 Web 应用程序运行期间持续存在,这意味着只有停止 Web 应用程序才会重置它们。

列表中的所有内容都会导致 Application 对象重置。

  • 手动停止 IIS 中的 Web 应用程序。
  • 正在停止万维网发布服务。
  • 正在重新启动 Web 服务器。

更新呢?

长寿的一个缺点是更新需要重新启动 Web 应用程序。幸运的是,尽管有解决方法。

会话数

使用 Web 应用程序根目录中的 global.asa 文件,我们可以利用 Session_OnStart() 事件触发 Application 变量的更新。

Sub Session_OnStart
  'Make sure multiple sessions aren't trying to update the value of
  'Application("ConnString") at the same time.
  Application.Lock
  Application("ConnString") = "..."
  Application.Unlock
End Sub

使用脚本更新

如果 Session 不受欢迎,您可以手动调用更新。

Application.Lock
Application("ConnString") = "..."
Application.Unlock