Asp3 在无会话上定义全局变量

Asp3 define Global variable on sessionless

如何定义可在多个 #include 级别访问的变量?例如。我在 VBScript 中声明了一些 DIM,我想在包含的 VBScript 中按名称访问它,因此它可以被一个 user/one 会话访问,它必须等于 session("UserID") 如果我完全禁用会话并且也不使用 cookie。

好吧,自从我上次使用 ASP3VBScript 以来已经有很长时间了,但是如果没记错的话,#Include 指令实际上不是ASP,这是对 IIS 的指令,用于添加包含在 ASP 页面中的文件。
因此,在包含文件中声明的任何函数或变量在所有意图和目的上都应被视为直接写入您的 ASP 页面。
正如您应该知道的那样,VBScript 不能使用变量,除非它在前面的代码行中声明,因此这只是您在 ASP 页面中使用 #Include 指令的位置问题.
这就是为什么您应该在使用它们的 ASP 页面中尽快使用 #Include 指令。

如果你想通过多个页面请求保持变量状态并且不能使用 cookie 或会话状态,我看到的一个选项是在每个请求的查询字符串中携带它url。

或者您也可以看看 html5 local storage。尽管有些人贬低 w3schools,但我始终认为它是一个很好的起点。

Cookie、会话(cookie-session)、本地存储值是跟踪访问者的最常见类型。另一个不可靠的选择是将值存储在数据库 table 中,然后混合使用 IP 地址和其他浏览器嗅探变量来指示用户(这是一个坏主意)。

最好的办法是使用标准 cookie 并关闭 ASP-SESSIONS。然后您将不得不构建自己的会话管理,这通常在数据库中完成。

至于将这些会话值输入 ASP 并在服务器端使用它们,您只需执行 request.cookies("session-coookie-name") 然后在您的D B。如果您希望它遍及您网站的所有页面,请将其放入一个包含文件中,并确保该包含文件包含在您所有的 asp 脚本中。

在编写 Classic asp 代码时,我通常从一个样板开始,其中包含一些包含(include-page-start.asp、include-head-asp、include-menu.asp, include-page-end.asp).有了这样的方法,您就可以快速添加功能,而无需稍后编辑每个页面。请记住,包含还可以包含其他包含 :)(asp 经典既烂又烂的部分原因!)

会话还使用 cookie 来跟踪访问者。 但是 ASP-SessionID Cookie 没有过期时间,因此如果您关闭浏览器,带有 ASP-SessionID 的 cookie 将被删除并且您的会话将被终止。 我认为您尝试在 ASP 站点上建立负载平衡,这是会话变量最复杂的事情。 你必须使用不同的东西来跟踪访问者。 Cookie 是一个选项,但您必须创建自己的会话管理,并且仍然必须使用 cookie 来记住它。

我找到了一个新组件来执行此操作。它就像负载平衡的魅力一样工作,并通过多种可访问机制保持您自己的会话管理。

http://www.aspstate.com/Developer/Documentation/html/R_Project_Documentation.htm