如何从ASP到VB6共享ASP经典会话变量?

时间:2019-08-06 08:59:56

标签: iis dll vbscript asp-classic vb6

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

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

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

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

2 个答案:

答案 0 :(得分:2)

基本上有两种方法,尽管自从我处理这两种方法以来已经很长时间了,所以这几乎完全来自内存,而一些Microsoft文档页面仍然有帮助闲逛:

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

    Dim objStuff
    Set objStuff = Server.CreateObject("Stuff.MyStuff")
    objStuff.DoSomething Session("ASessionVariable")
    
  2. 由于使用的是Server.CreateObject语法,因此VB6可以直接挂接到IIS对象模型中。在VB6项目参考中,您需要添加“ COM +服务类型库”和“ Microsoft Active Server Pages对象库”。 (如果开发系统上没有它们,则可能需要在其上安装IIS。)然后使用GetObjectContext()函数从组件内部访问ASP对象。请参阅“ Creating Visual Basic COM Components for ASP”上的文档。

    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中确切内容的文档,但是我认为您应该能够让它工作。不过,第一种选择可能容易得多。

答案 1 :(得分:2)

我找到了解决方案,一个用户在论坛上为我提供了帮助,我在下面放置了链接。

您可以在类中定义两个子类“ OnStartPage”和“ OnEndPage”。例如:

Dim vSC As ScriptingContext

Public Sub OnStartPage(SC As ScriptingContext)
    Set vSC = SC
End Sub

Public Sub OnEndPage()
    Set vSC = Nothing
End Sub

(您需要在项目中添加对“ Microsoft Active Server Pages对象库”的引用)

在创建对象(Server.CreateObject)和销毁对象(Set Obj = Nothing)时,IIS会自动调用此subs。这样,您就不需要“ DataFromASP”子对象。 ScriptingContext对象使您可以访问所有ASP对象(服务器,响应等)

Link vbforums.com

感谢狮子座

相关问题