ASP El archivo Global.asa
El archivo Global.asa
El archivo Global.asa es un archivo opcional que puede contener declaraciones de objetos, variables y métodos a los que se puede acceder desde todas las páginas de una aplicación ASP.
Todos los scripts de navegador válidos (JavaScript, VBScript, JScript, PerlScript, etc.) se pueden usar dentro de Global.asa.
El archivo Global.asa solo puede contener lo siguiente:
- Eventos de aplicación
- Eventos de sesión
- <objeto> declaraciones
- Declaraciones de TypeLibrary
- la directiva #include
Nota: El archivo Global.asa debe almacenarse en el directorio raíz de la aplicación ASP y cada aplicación solo puede tener un archivo Global.asa.
Eventos en Global.asa
En Global.asa puede decirle a los objetos de la aplicación y la sesión qué hacer cuando se inicia la aplicación/sesión y qué hacer cuando finaliza la aplicación/sesión. El código para esto se coloca en los controladores de eventos. El archivo Global.asa puede contener cuatro tipos de eventos:
Application_OnStart : ocurre cuando el PRIMER usuario llama a la primera página en una aplicación ASP. Este evento ocurre después de que se reinicia el servidor web o después de que se edita el archivo Global.asa. El evento "Session_OnStart" ocurre inmediatamente después de este evento.Session_OnStart : este evento ocurre CADA vez que un usuario NUEVO solicita su primera página en la aplicación ASP.
Session_OnEnd : este evento ocurre CADA vez que un usuario finaliza una sesión. Una sesión de usuario finaliza después de que el usuario no haya solicitado una página durante un tiempo específico (por defecto, esto es 20 minutos).
Application_OnEnd : este evento se produce después de que el ÚLTIMO usuario haya finalizado la sesión. Normalmente, este evento ocurre cuando se detiene un servidor web. Este procedimiento se usa para limpiar la configuración después de que la aplicación se detiene, como eliminar registros o escribir información en archivos de texto.
Un archivo Global.asa podría verse así:
<script language="vbscript" runat="server">
sub Application_OnStart
'some code
end sub
sub Application_OnEnd
'some code
end sub
sub Session_OnStart
'some code
end sub
sub Session_OnEnd
'some code
end sub
</script>
Nota: Debido a que no podemos usar los delimitadores de secuencias de comandos ASP (<% y %>) para insertar secuencias de comandos en el archivo Global.asa, colocamos subrutinas dentro de un elemento HTML <script>.
<objeto> Declaraciones
Es posible crear objetos con alcance de sesión o aplicación en Global.asa usando la etiqueta <object>.
Nota: ¡La etiqueta <object> debe estar fuera de la etiqueta <script>!
Sintaxis
<object runat="server" scope="scope" id="id"
{progid="progID"|classid="classID"}>
....
</object>
Parameter | Description |
---|---|
scope | Sets the scope of the object (either Session or Application) |
id | Specifies a unique id for the object |
ProgID | An id associated with a class id. The format for ProgID is [Vendor.]Component[.Version]
Either ProgID or ClassID must be specified. |
ClassID | Specifies a unique id for a COM class object. Either ProgID or ClassID must be specified. |
Ejemplos
El primer ejemplo crea un objeto de ámbito de sesión denominado "MyAd" mediante el parámetro ProgID:
<object runat="server" scope="session" id="MyAd"
progid="MSWC.AdRotator">
</object>
El segundo ejemplo crea un objeto de ámbito de aplicación denominado "MyConnection" mediante el parámetro ClassID:
<object runat="server" scope="application" id="MyConnection"
classid="Clsid:8AD3067A-B3FC-11CF-A560-00A0C9081C21">
</object>
Los objetos declarados en el archivo Global.asa pueden ser utilizados por cualquier script en la aplicación:
GLOBAL.ASA:
<object runat="server" scope="session" id="MyAd"
progid="MSWC.AdRotator">
</object>
You could reference the object "MyAd" from any page in the ASP application:
SOME .ASP FILE:
<%=MyAd.GetAdvertisement("/banners/adrot.txt")%>
Declaraciones de TypeLibrary
Una TypeLibrary es un contenedor para el contenido de un archivo DLL correspondiente a un objeto COM. Al incluir una llamada a TypeLibrary en el archivo Global.asa, se puede acceder a las constantes del objeto COM y el código ASP puede informar mejor de los errores. Si su aplicación web se basa en objetos COM que han declarado tipos de datos en bibliotecas de tipos, puede declarar las bibliotecas de tipos en Global.asa.
Sintaxis
<!--METADATA TYPE="TypeLib"
file="filename"
uuid="id"
version="number"
lcid="localeid"
-->
Parameter | Description |
---|---|
file | Specifies an absolute path to a type library.
Either the file parameter or the uuid parameter is required |
uuid | Specifies a unique identifier for the type library.
Either the file parameter or the uuid parameter is required |
version | Optional. Used for selecting version. If the requested version is not found, then the most recent version is used |
lcid | Optional. The locale identifier to be used for the type library |
Valores de error
El servidor puede devolver uno de los siguientes mensajes de error:
Error Code | Description |
---|---|
ASP 0222 | Invalid type library specification |
ASP 0223 | Type library not found |
ASP 0224 | Type library cannot be loaded |
ASP 0225 | Type library cannot be wrapped |
Nota: las etiquetas METADATA pueden aparecer en cualquier parte del archivo Global.asa (tanto dentro como fuera de las etiquetas <script>). Sin embargo, se recomienda que las etiquetas METADATA aparezcan cerca de la parte superior del archivo Global.asa.
Restricciones
Restricciones sobre lo que puede incluir en el archivo Global.asa:
- No puede mostrar texto escrito en el archivo Global.asa. Este archivo no puede mostrar información.
- Solo puede usar objetos Servidor y Aplicación en las subrutinas Application_OnStart y Application_OnEnd. En la subrutina Session_OnEnd, puede usar objetos Servidor, Aplicación y Sesión. En la subrutina Session_OnStart puede usar cualquier objeto incorporado
Cómo usar las subrutinas
Global.asa se usa a menudo para inicializar variables.
El siguiente ejemplo muestra cómo detectar la hora exacta en que un visitante llega por primera vez a un sitio web. El tiempo se almacena en una variable de sesión denominada "iniciado", y se puede acceder al valor de la variable "iniciado" desde cualquier página ASP de la aplicación:
<script language="vbscript" runat="server">
sub Session_OnStart
Session("started")=now()
end sub
</script>
Global.asa también se puede utilizar para controlar el acceso a la página.
El siguiente ejemplo muestra cómo redirigir a cada nuevo visitante a otra página, en este caso a una página llamada "newpage.asp":
<script language="vbscript" runat="server">
sub Session_OnStart
Response.Redirect("newpage.asp")
end sub
</script>
Y puede incluir funciones en el archivo Global.asa.
En el siguiente ejemplo, la subrutina Application_OnStart se produce cuando se inicia el servidor web. Luego, la subrutina Application_OnStart llama a otra subrutina llamada "getcustomers". La subrutina "obtenerclientes" abre una base de datos y recupera un conjunto de registros de la tabla "clientes". El conjunto de registros se asigna a una matriz, a la que se puede acceder desde cualquier página ASP sin consultar la base de datos:
<script language="vbscript" runat="server">
sub Application_OnStart
getcustomers
end sub
sub getcustomers
set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open "c:/webdata/northwind.mdb"
set rs=conn.execute("select name from customers")
Application("customers")=rs.GetRows
rs.Close
conn.Close
end sub
</script>
Ejemplo de Global.asa
En este ejemplo, crearemos un archivo Global.asa que cuenta el número de visitantes actuales.
- Application_OnStart establece la variable de aplicación "visitantes" en 0 cuando se inicia el servidor
- La subrutina Session_OnStart agrega uno a la variable "visitantes" cada vez que llega un nuevo visitante
- La subrutina Session_OnEnd resta uno de "visitantes" cada vez que se activa esta subrutina
El archivo 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>
Para mostrar el número de visitantes actuales en un archivo ASP:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p>There are <%response.write(Application("visitors"))%>
online now!</p>
</body>
</html>