2010-01-02 40 views
2

我的應用程序由從ASP調用的VB6 DLL組成。它需要管理到一個(非標準)數據庫的連接池。我通過使用全局變量實現了這一點,但由於ASP設置導致應用程序崩潰,因此每20分鐘重置一次。從傳統ASP調用的DLL的地址空間

A previous poster said ASP中的DLL全部都在自己的地址空間中創建,因此使得全局變量解決方案完全不可行,因爲每個頁面訪問都有自己的「全局變量」。

這不符合我的觀察,即全局變量似乎存在,直到DLL達到其空閒超時。

我們哪一個是對的?我可以在DLL全局變量上假設什麼範圍?

+1

沒有看到有人說「ASP中的DLLS都是在自己的地址空間中創建的」?這當然沒有任何意義,它擁有地址空間的過程,一個DLL不能創建地址空間。 – AnthonyWJones 2010-01-02 21:41:54

回答

1

每個請求都會得到自己的全局變量副本的想法是False

但強烈建議您編譯VB6 dlls,以便在asp中使用,並且在內存中保留設置。

每個線程都會得到它自己的全局變量副本。因此,如果這些請求在不同的線程上運行,多個請求不一定會看到相同的全局變量。

在觀察IIS6時,我注意到在測試情況下,很少有多個請求同時運行,同一線程被用於後續請求。我懷疑這可能是你覺得你有一組全局變量的原因。在生產中,這不會是事實。