如何在Classic ASP中创建变量static(或"global")?

jos*_*ley 5 static global-variables asp-classic

我想让我的变量变为静态或"全局" - 因此与.NET中的静态效果相同; 访问它的每个会话都会得到相同的结果,如果一个会话修改它,它也会影响其他所有人.

如何在Classic ASP中实现这一目标?

Jos*_*lio 7

如果您想拥有一个可在应用程序范围内访问的变量,则可以使用该应用程序对象.请务必使用Application.Lock/Unlock来防止出现任何问题.

Application.Lock
Application("MyVariable") = "SomeValue"
Application.Unlock
Run Code Online (Sandbox Code Playgroud)


bal*_*dre 6

使用会话变量

Session("myVariableName") = "my new value"
Run Code Online (Sandbox Code Playgroud)

范围将是用户...

如果要将范围扩展到网站中的所有用户,则可以使用Application变量

Application("myVariableName") = "my new value"
Run Code Online (Sandbox Code Playgroud)

您也可以在global.asa文件中重置或处理此问题

这是常见的事情:

global.asa文件:

<script language="vbscript" runat="server">

Sub Application_OnStart
  Application("visitors") = 0
End Sub

Sub Session_OnStart
  Application.Lock
  Application("visitors") = Application("visitors") + 1
  Application.UnLock
End Sub

Sub Session_OnEnd
  Application.Lock
  Application("visitors") = Application("visitors") - 1
  Application.UnLock
End Sub

</script>
Run Code Online (Sandbox Code Playgroud)

default.asp文件:

<html>
 <head>
 </head>
 <body>
  <p>There are <%response.write(Application("visitors"))%> online now!</p>
 </body>
</html>
Run Code Online (Sandbox Code Playgroud)