【问题标题】:Set SessionId in Classic ASP?在经典 ASP 中设置 SessionId?
【发布时间】:2017-09-07 12:26:18
【问题描述】:

在 PHP 中,我可以通过使用 Session_id() 作为设置器来选择使用特定的 Session。

Classic ASP/VBScript 中是否有类似的功能?我有一个 VBScript 站点,根据页面的不同,它要么直接从浏览器调用,要么通过 HTTP 在内部调用。不幸的是,ASP 将它们视为两个单独的会话,因为用户的计算机调用一个,而服务器本身调用另一个。我想告诉服务器调用,“嘿,使用 Session 123456”,这样它就可以直接与调用页面的用户共享信息。

有什么建议吗?有什么方法可以更改或命名页面上使用的 Session?

【问题讨论】:

  • 你能举个例子吗?服务器调用也不会与浏览器共享 cookie...
  • ASP的Session没有这样的内置方法。但是您可以在内部请求中手动设置cookie 标头(通过从Request.ServerVariables("ALL_RAW") 或类似的方式解析会话cookie 的值)。
  • 您从哪里提出内部请求?询问因为,如果两者都是 ASP,就会发生死锁。
  • 这可能行得通。所以...获取 VBScript 会话 ID,然后在我发出内部请求时手动传递相同的 cookie。不错的方法。有关的? stackoverflow.com/questions/7331172/…
  • :) 没有简单的方法告诉服务器“嘿,使用会话 #1”。因为 ASP 的会话存储在进程中并且访问是单线程的。当请求与会话 #1 一起工作时,您无法从其他请求访问会话 #1,从而发生死锁并最终发生请求超时。但是很容易从其他地方访问。 PHP 例如stackoverflow.com/a/37060660

标签: asp-classic


【解决方案1】:

在 ASP Classic 中没有像 PHP 的 Session_id() 这样的内置方法。

ASP 的 Session 对象具有严格的锁定机制,可以保证状态的一致性,因此这可以防止您在同一个应用程序池中使用相同的会话标识符发出额外的请求。

另一方面,很容易实现一个桥来与同一域下的不同平台(如 PHP)共享会话状态。


How to access ASP classic session variable from PHP?

【讨论】:

    【解决方案2】:

    我不确定我是否正确理解了您的问题。您需要为每个用户设置一个变量吗?为什么不使用应用程序变量?

    <%
        x=session.sessionID
        if not instr(application("x"),x)>0 then
           application("x")=application("x") & x &";"
        end if
    
        aArr=split(application("x"),";")
    
        for i=0 to ubound(aArr)
            REM this will show you all used session.variables
            response.write aArr(i)&"<br>"
        next
    %>
    

    【讨论】:

    • ASP 通过在用户浏览器上设置一个包含会话 ID 的 cookie 来跟踪会话。有时,这个特定的网站通过一个页面(通常是一个 PHP 脚本)通过 cURL 在服务器端直接调用一个 ASP 页面来工作。在这种情况下,“用户”不是浏览器的人,而是 PHP 脚本——它没有我浏览器上的 cookie。我需要这些案例以某种方式与使用网络浏览器的人进行相同的会话。当 ASP 调用 PHP 时,PHP 可以只设置会话 ID,但反过来说,VBScript 似乎无法做到这一点
    • 你为什么不创建一个自己的会话ID?或使用应用程序变量而不是会话,例如: if session("mySession")&""="" then session("mySession")=year(date)&month(date)&day(date)&replace(time,": ","")&request.serverVariables("remote_addr") 如果结束
    • 因为您不能在经典 VBScript 中这样做。这就是字面上的问题!
    • 你读过我的例子吗?像 session("mySessionID")="test" 这样设置你自己的会话 ID 类似于 session.sessionID。 Session.sessionID 是自动生成的,但实际上只是一个计数器。
    • 目前不在我的电脑上进行测试,但那是 Classic Asp 还是 ASP.net?我没有看到任何建议您可以在 Classic ASP 中设置会话 ID
    猜你喜欢
    • 2016-06-04
    • 1970-01-01
    • 1970-01-01
    • 2012-04-30
    • 1970-01-01
    • 2011-02-28
    • 2010-10-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多