2010-01-02 69 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时,我注意到在测试情况下,很少有多个请求同时运行,同一线程被用于后续请求。我怀疑这可能是你觉得你有一组全局变量的原因。在生产中,这不会是事实。