Asp classic 如何将经典ASP会话的全部内容传递给.net代码?
我知道如何从一个经典的ASP站点(Server.CreateObject、gacutil和其他所有站点)调用.net代码的练习。我说的是从VBScript代码调用.NETDLL。(这与ASP.net无关) 我想知道的是,如何将整个经典ASP会话的内容传递给.net代码。我想我想把Session.Contents传递给.net代码,但我不知道如何编写一个接受该对象的接口Asp classic 如何将经典ASP会话的全部内容传递给.net代码?,asp-classic,Asp Classic,我知道如何从一个经典的ASP站点(Server.CreateObject、gacutil和其他所有站点)调用.net代码的练习。我说的是从VBScript代码调用.NETDLL。(这与ASP.net无关) 我想知道的是,如何将整个经典ASP会话的内容传递给.net代码。我想我想把Session.Contents传递给.net代码,但我不知道如何编写一个接受该对象的接口 如果您还可以告诉我如何传递Request.Form以及ASPError对象的全部内容,则会有额外的好处。假设您的意思是Set i
如果您还可以告诉我如何传递
Request.Form
以及ASPError
对象的全部内容,则会有额外的好处。假设您的意思是Set invokedNetDLL=CreateObject(“MyNamespace.MyType”)
当您说“从VBScript代码调用.net DLL”时,我会尝试以下操作:
<%
Dim key
Dim serializedSession
Dim invokedNetDLL
For Each key in Session
serializedSession = key & "=" & Session(key) & "&"
Next
'Trim last &
serializedSession = Left(serializedSession, Len(serializedSession) - 1)
Set invokedNetDLL = CreateObject("MyNamespace.MyType")
invokedNetDLL.MyMethod(serializedSession)
%>
我还没有测试过这段代码,但这就是我要开始的地方。不说明显的问题,但您看到了吗?还是这个?我熟悉使用SQL在经典ASP和ASP.net之间共享会话,但在这种情况下,没有ASP.net会话,只有经典ASP会话,我需要从ASP代码调用的.net库中的方法访问该会话的内容。我看到。。。换句话说,我可以“字符串化”我想要保存的值。我希望这个框架有一些更优雅的东西,但是如果我找不到其他东西,我肯定会这样做!也许像XML或JSON这样的东西是合适的,因为它有转义保留字符和所有字符的约定。我使用了
QueryString
样式的转义(因为我不知道您的.NET版本),认为它很容易解码,尽管您当然可以将其字符串化为XML或JSON(或自定义格式)。此外,这个答案假设您可以在经典ASP中循环使用StateBag,我还没有测试过它。除非您将对象保持在会话中,否则这应该是可行的,在这种情况下,您还必须将这些对象序列化为原语。
<%
Dim key
Dim serializedSession
Dim serializedRequestForm
Dim invokedNetDLL
For Each key in Request.Form
serializedRequestForm = key & "=" & Request.Form(key) & "&"
Next
'Trim last &
serializedRequestForm = Left(serializedRequestForm, Len(serializedRequestForm) - 1)
For Each key in Session
serializedSession = key & "=" & Session(key) & "&"
Next
'Trim last &
serializedSession = Left(serializedSession, Len(serializedSession) - 1)
Set invokedNetDLL = CreateObject("MyNamespace.MyType")
invokedNetDLL.MyMethod(serializedRequestForm, serializedSession)
%>