我正在使用vb脚本在经典Asp中开发的项目,该脚本使用Server.CreateObject
方法调用VB6 dll库。
我在ASP中创建了一个会话变量,并希望从 VB6 dll 中读取它。
我在网上进行了很多搜索,但没有找到解决方案。 这是与所连接的用户相关的数据,然后存储在会话变量中。
我的目标是通过VB6 dll了解连接的用户。
答案 0 :(得分:2)
基本上有两种方法,尽管自从我处理这两种方法以来已经很长时间了,所以这几乎完全来自内存,而一些Microsoft文档页面仍然有帮助闲逛:
当您在VB6 DLL中调用子或函数时,像其他任何参数一样传递您要查找的信息。这可能是最直观的,因为它的工作方式与其他任何方法调用一样。
Dim objStuff
Set objStuff = Server.CreateObject("Stuff.MyStuff")
objStuff.DoSomething Session("ASessionVariable")
由于使用的是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对象(服务器,响应等)
感谢狮子座