目录

  1. ASP Global.asa 文件介绍
  2. Global.asa 的主要事件
  3. Global.asa 的典型应用场景
  4. 示例代码
  5. 参考资料
  6. 出站链接

1. ASP Global.asa 文件介绍

Global.asa 是 ASP(Active Server Pages)应用程序的全局文件,它存放应用程序级别的事件处理代码,如 ApplicationSession 相关事件。该文件通常放置在网站的根目录中,并且不需要手动调用,IIS(Internet Information Services)会自动检测并执行其中的代码。

📌 关键特点:

  • 仅能存放在网站的根目录。
  • 不能直接通过浏览器访问。
  • 仅适用于 IIS 托管的 ASP 经典环境(ASP 3.0 及更早版本)
  • 主要用于管理会话、全局变量、初始化任务等。

2. Global.asa 的主要事件

Global.asa 主要用于处理 ApplicationSession 事件。以下是其四个主要事件:

Application_OnStart 事件

触发时机:

  • 当第一个用户访问 ASP 应用时Application 级别的变量会被初始化。

示例:

<SCRIPT LANGUAGE="VBScript" RUNAT="Server">
Sub Application_OnStart
    Application("TotalVisits") = 0  ' 记录网站总访问次数
    Application("OnlineUsers") = 0  ' 记录在线用户数量
End Sub
</SCRIPT>


Application_OnEnd 事件

触发时机:

  • 当服务器停止或重启,或者 ASP 应用被卸载 时触发。

示例:

<SCRIPT LANGUAGE="VBScript" RUNAT="Server">
Sub Application_OnEnd
    ' 这里可以写日志记录或者清理全局资源
End Sub
</SCRIPT>


Session_OnStart 事件

触发时机:

  • 每当一个新的用户访问网站并创建新的 Session 时 触发。

示例:

<SCRIPT LANGUAGE="VBScript" RUNAT="Server">
Sub Session_OnStart
    Application.Lock
    Application("OnlineUsers") = Application("OnlineUsers") + 1  ' 增加在线用户计数
    Application.Unlock
End Sub
</SCRIPT>


Session_OnEnd 事件

触发时机:

  • 当用户的 Session 超时(默认 20 分钟)或 Session 结束 时触发。

示例:

<SCRIPT LANGUAGE="VBScript" RUNAT="Server">
Sub Session_OnEnd
    Application.Lock
    Application("OnlineUsers") = Application("OnlineUsers") - 1  ' 减少在线用户计数
    Application.Unlock
End Sub
</SCRIPT>


3. Global.asa 的典型应用场景

初始化全局变量

Global.asa 常用于初始化全局变量,例如:

  • 记录网站访问次数
  • 记录在线用户数
  • 设定全局配置参数

统计在线用户数量

使用 Session_OnStartSession_OnEnd 来统计当前在线用户。

<SCRIPT LANGUAGE="VBScript" RUNAT="Server">
Sub Session_OnStart
    Application.Lock
    Application("OnlineUsers") = Application("OnlineUsers") + 1
    Application.Unlock
End Sub

Sub Session_OnEnd
    Application.Lock
    Application("OnlineUsers") = Application("OnlineUsers") - 1
    Application.Unlock
End Sub
</SCRIPT>


日志记录

可以在 Application_OnEnd 事件中写入日志文件,记录网站的运行信息。

<SCRIPT LANGUAGE="VBScript" RUNAT="Server">
Sub Application_OnEnd
    Dim fs, file
    Set fs = Server.CreateObject("Scripting.FileSystemObject")
    Set file = fs.OpenTextFile(Server.MapPath("/logs/shutdown.log"), 8, True)
    file.WriteLine "Application ended at " & Now()
    file.Close
    Set file = Nothing
    Set fs = Nothing
End Sub
</SCRIPT>


4. 示例代码

以下是一个完整的 Global.asa 示例,包含应用程序启动、会话管理和日志记录功能。

<SCRIPT LANGUAGE="VBScript" RUNAT="Server">
Sub Application_OnStart
    Application("TotalVisits") = 0
    Application("OnlineUsers") = 0
End Sub

Sub Session_OnStart
    Application.Lock
    Application("OnlineUsers") = Application("OnlineUsers") + 1
    Application.Unlock
End Sub

Sub Session_OnEnd
    Application.Lock
    Application("OnlineUsers") = Application("OnlineUsers") - 1
    Application.Unlock
End Sub

Sub Application_OnEnd
    Dim fs, file
    Set fs = Server.CreateObject("Scripting.FileSystemObject")
    Set file = fs.OpenTextFile(Server.MapPath("/logs/shutdown.log"), 8, True)
    file.WriteLine "Application ended at " & Now()
    file.Close
    Set file = Nothing
    Set fs = Nothing
End Sub
</SCRIPT>


5. 参考资料


6. 出站链接


这样,你可以充分了解 Global.asa 的作用、事件、示例代码以及应用场景,帮助你更好地管理 ASP 站点的全局状态!🚀