Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp classic 如何将经典ASP会话的全部内容传递给.net代码?_Asp Classic - Fatal编程技术网

Asp classic 如何将经典ASP会话的全部内容传递给.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

我知道如何从一个经典的ASP站点(Server.CreateObject、gacutil和其他所有站点)调用.net代码的练习。我说的是从VBScript代码调用.NETDLL。(这与ASP.net无关)

我想知道的是,如何将整个经典ASP会话的内容传递给.net代码。我想我想把Session.Contents传递给.net代码,但我不知道如何编写一个接受该对象的接口


如果您还可以告诉我如何传递
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)

%>