首页 > 解决方案 > 如何将 ASP 经典会话变量从 ASP 共享到 VB6?

问题描述

我正在开发一个在经典 Asp 中使用 vb 脚本开发的项目,该脚本使用该Server.CreateObject方法调用 VB6 dll 库。

我在 ASP 中创建了一个会话变量,并想从VB6 dll中读取它。

我在网上搜索了很多,但我没有找到解决方案。这是与连接的用户相关的数据,然后存储在会话变量中。

我的目标是通过 VB6 dll 了解连接的用户。

标签: iisdllvbscriptasp-classicvb6

解决方案


基本上有两种方法,虽然我已经很长时间没有处理过任何一种方法,所以这几乎完全是凭记忆,在一些仍然存在的 Microsoft 文档页面的帮助下:

  1. 当您调用 VB6 DLL 中的子函数或函数时,传递您正在寻找的信息,就像传递任何其他参数一样。这可能是最直观的,因为它与任何其他方法调用一样工作。

    Dim objStuff
    Set objStuff = Server.CreateObject("Stuff.MyStuff")
    objStuff.DoSomething Session("ASessionVariable")
    
  2. 由于您使用的是Server.CreateObject语法,VB6 可以直接连接到 IIS 对象模型。在VB6项目引用中,需要添加“COM+ Services Type Library”和“Microsoft Active Server Pages Object Library”。(如果您的开发系统上没有它们,您可能需要在其上安装 IIS。)然后您使用该GetObjectContext()函数从您的组件中访问 ASP 对象。请参阅“为 ASP 创建 Visual Basic COM 组件”的文档。

    Public Sub DoSomething() 
        Dim objContext As ObjectContext 
        Dim objResponse As Response 
        Dim objSession As Session
        Set objContext = GetObjectContext() 
        Set objResponse = objContext("Response") 
        Set objSession = objContext("Session")
    
        objResponse.Write "Session value: " & objSession("ASessionVariable")
    End Sub
    

    然后在您的 ASP 中:

    Dim objStuff
    Set objStuff = Server.CreateObject("Stuff.MyStuff")
    objStuff.DoSomething
    

    你可能需要玩一下,因为正如我所说,我永远没有做过任何这些,而且我找不到关于该 ObjectContext 中确切内容的文档,但我认为你应该能够得到它工作。不过,第一个选项可能要容易得多。


推荐阅读