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

时间:2015-05-15 10:52:43

标签: variables session vbscript asp-classic

如何定义可在多个#include级别访问的变量?例如。我在DIM中声明了一些VBScript,我想在包含的VBScript内通过名称访问它,因此一个用户/一个会话可以访问它,它必须等于{{1}如果我完全禁用了会话,也不使用cookie。

4 个答案:

答案 0 :(得分:3)

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

或许您也可以查看html5 local storage。尽管有些人贬低w3schools,但我总觉得它是一个很好的起点。

答案 1 :(得分:1)

好吧,自从我上次使用ASP3VBScript以来已经很长时间了,但是如果内存服务,#Include指令实际上是不是ASP的一部分,它是指示IIS添加包含在ASP页面中的文件的说明。
因此,所有意图和目的都应考虑在包含文件中声明的任何函数或变量,就像它直接写入ASP页面一样。
您应该知道,VBScript无法使用变量,除非它在之前的代码行中声明,因此它只是ASP页面中的位置问题您正在使用#Include指令 这就是您应该在使用#Include页面的ASP页面中尽快使用<Resource name="jdbc/myDS" auth="Container" type="javax.sql.DataSource" driverClassName="com.p6spy.engine.spy.P6SpyDriver" url="jdbc:p6spy:oracle:thin:@server:1521:XXX" username="XXX" password="XXX" maxActive="2" maxIdle="2" maxWait="-1" validationInterval="30000" validationQuery="SELECT 1 FROM DUAL" /> 指令的原因。

答案 2 :(得分:1)

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

您最好的选择是使用标准Cookie并关闭ASP-SESSIONS。然后,您必须构建自己的会话管理,这通常在数据库中完成。

至于将这些会话值转换为ASP并在服务器端使用它们,您只需执行request.cookies(&#34; session-coookie-name&#34;)然后在数据库中查找会话。如果您希望这遍历网站的所有页面,请将其放在包含文件中,并确保包含文件包含在所有asp脚本中。

编码Classic asp时,我通常从一个包含一些包含的锅炉板开始(include-page-start.asp,include-head-asp,include-menu.asp,include-page-end.asp)。使用这样的方法可以让您快速添加功能,而无需稍后编辑每个页面。记住包括还可以包括其他包括:)(部分原因是asp经典既糟透了又摇滚!)

答案 3 :(得分:1)

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

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

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