2012-04-13 37 views
1

我在我的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 

回答

1

假設:

  1. 你只是忘記了展示對象到companies變量的一個實例的declaraion和分配。
  2. 該對象是自由線程的,但具有使Application對象中的對象成爲可用的STA編組代理所需的代理。
  3. 您只需使用緩存數據加載此對象以提高性能。也就是說,您不希望在處理請求期間更新它,並將該數據用於後續請求。

如果上述假設都是真的,那麼你很好。如果有任何錯誤,您有問題。

如果您遇到前兩個問題,那麼無論有無網絡農場都有問題,因此您應該能夠在解體之前對其進行測試。

如果你對第三個假設有問題,那麼你將需要後臺數據庫和其他一些管道的幫助。

+0

非常好的解釋。我認爲在一個Web場中,Application_Start事件將分別發生在每個Web服務器上,並且每當這個事件發生在每個Web服務器上時,Application(「companies」)就會被填充到該Web服務器。因此,似乎每個Web服務器都將擁有自己獨立的應用程序(「公司」)變量,而不是所有Web服務器都使用的單個共享應用程序變量。 – Sunil 2012-04-15 05:18:44

+0

此外,另一個奇怪的是,我可以在任何ASP頁面上使用'公司'變量,它會顯示正確的值。那麼,Application(「公司」)變量的用途是什麼?這有點令人困惑。 – Sunil 2012-04-15 05:19:39

+0

@Sunil:「Application」對象的範圍是託管ASP應用程序的進程。在Web Farms和Web Gardens中,有多個進程,因此有多個應用程序對象實例。你的第二個評論沒有意義。 – AnthonyWJones 2012-04-15 17:31:17

相關問題