在Web场上托管的经典ASP中的应用程序变量?
问题描述:
我在我的global.asa Application_Start事件中使用以下代码。我的问题是,我需要做什么特殊的事情,所以这个应用程序变量可以跨Web场使用,因为我的传统ASP应用程序托管在Web场上?在Web场上托管的经典ASP中的应用程序变量?
Sub Application_OnStart
companies.add "a", "Athens"
companies.add "b", "Belgrade"
companies.add "c", "Cairo"
set Application("companies") = companies
End Sub
答
假设:
- 你只是忘记了展示对象到
companies
变量的一个实例的declaraion和分配。 - 该对象是自由线程的,但具有使
Application
对象中的对象成为可用的STA编组代理所需的代理。 - 您只需使用缓存数据加载此对象以提高性能。也就是说,您不希望在处理请求期间更新它,并将该数据用于后续请求。
如果上述假设都是真的,那么你很好。如果有任何错误,您有问题。
如果您遇到前两个问题,那么无论有无网络农场都有问题,因此您应该能够在解体之前对其进行测试。
如果你对第三个假设有问题,那么你将需要后台数据库和其他一些管道的帮助。
非常好的解释。我认为在一个Web场中,Application_Start事件将分别发生在每个Web服务器上,并且每当这个事件发生在每个Web服务器上时,Application(“companies”)就会被填充到该Web服务器。因此,似乎每个Web服务器都将拥有自己独立的应用程序(“公司”)变量,而不是所有Web服务器都使用的单个共享应用程序变量。 – Sunil 2012-04-15 05:18:44
此外,另一个奇怪的是,我可以在任何ASP页面上使用'公司'变量,它会显示正确的值。那么,Application(“公司”)变量的用途是什么?这有点令人困惑。 – Sunil 2012-04-15 05:19:39
@Sunil:“Application”对象的范围是托管ASP应用程序的进程。在Web Farms和Web Gardens中,有多个进程,因此有多个应用程序对象实例。你的第二个评论没有意义。 – AnthonyWJones 2012-04-15 17:31:17