【问题标题】:Address space of DLLs called from classic ASP从经典 ASP 调用的 DLL 的地址空间
【发布时间】:2010-01-02 15:14:34
【问题描述】:

我的应用程序包含一个从 ASP 调用的 VB6 DLL。它需要管理与(非标准)数据库的连接池。我通过使用全局变量来实现这一点,但由于 ASP 设置导致应用程序崩溃,因此每 20 分钟重置一次。

previous poster said 说 ASP 中的 DLL 都是在它们自己的地址空间中创建的,因此全局变量解决方案完全不可行,因为每个页面访问都有自己的“全局变量”。

这不符合我的观察,即全局变量似乎存在,直到 DLL 达到其空闲超时。

我们谁是对的?我可以在 DLL 全局变量上假设什么范围?

【问题讨论】:

  • 没有看到有人说“ASP 中的 DLLS 都是在自己的地址空间中创建的”?这当然没有任何意义,它拥有地址空间的进程,dll不能创建地址空间。

标签: dll asp-classic vb6


【解决方案1】:

每个请求都会获得自己的全局变量副本的想法是错误

但是,强烈建议您编译 VB6 dll 以在 asp 中用作单元线程并使用内存中的保留设置。

每个线程都会获得自己的全局变量副本。因此,如果这些请求在不同的线程上运行,则多个请求不一定会看到相同的全局变量。

在观察 IIS6 时,我注意到在很少有多个请求同时运行的测试情况下,同一线程被用于后续请求。我怀疑这可能是您似乎拥有一组全局变量的原因。在生产中,这不会是真的。

【讨论】:

    猜你喜欢
    • 2013-03-04
    • 2019-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-29
    • 1970-01-01
    • 2013-05-29
    • 1970-01-01
    相关资源
    最近更新 更多