ASP Archivo Global.asa


Archivo Global.asa

El archivo Global.asa es un archivo opcional que puede contener declaraciones de objetos, variables y métodos que pueden ser accedidos por cada página en una aplicación ASP.

Todos los scripts de navegador válidos (JavaScript, VBScript, JScript, PerlScript, etc.) se pueden usar en Global.asa.

El archivo Global.asa solo puede contener lo siguiente:

  • Eventos de Application
  • Eventos de Session
  • Declaración <object>
  • Declaración de TypeLibrary
  • 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 indicar a los objetos application y session qué hacer cuando la aplicación/sesión comienza, y qué hacer cuando la aplicación/sesión termina. El código que realiza esta tarea se coloca en controladores de eventos. El archivo Global.asa puede contener cuatro tipos de eventos:

Application_OnStart- Este evento ocurre cuando el primer usuario llama a la primera página de una aplicación ASP. Este evento ocurre después de que se reinicie el servidor web o después de que se edite el archivo Global.asa. El evento 'Session_OnStart' ocurre inmediatamente después de que ocurra este evento.

Session_OnStart- Este evento ocurre cada vez que un nuevo usuario solicita su primera página en una aplicación ASP.

Session_OnEnd- Este evento ocurre cada vez que un usuario finaliza la sesión. Si el usuario no solicita ninguna página dentro de un tiempo especificado (el tiempo predeterminado es de 20 minutos), la sesión del usuario finalizará.

Application_OnEnd- Este evento ocurre después de que el último usuario finaliza su sesión. Típicamente, este evento ocurre cuando el servidor web se detiene. Esta subrutina se utiliza para limpiar configuraciones después de que la aplicación se detiene, como eliminar registros o escribir información en un archivo 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 script de ASP (<% y %>) para insertar scripts en el archivo Global.asa, necesitamos colocar las subrutinas dentro de los elementos <script> de HTML.


Declaración <object>

Se pueden crear objetos con ámbito de session o application en el archivo Global.asa mediante el uso de la etiqueta <object>.

Nota:¡La etiqueta <object> debe ubicarse fuera de las etiquetas <script>!

Sintaxis

<object runat="server" scope="scope" id="id" {progid="progID"|classid="classID"}>
....
</object>

Parámetro Descripción
scope Establece el ámbito del objeto (Session o Application).
id Especifica un id único para el objeto.
ProgID El id asociado con ClassID. El formato de ProgID es: [Vendor.]Component[.Version].

ProgID o ClassID deben ser especificados.

ClassID Especifica un id único para un objeto de clase COM.

ProgID o ClassID deben ser especificados.

Ejemplo

El primer ejemplo crea un objeto de ámbito de sesión llamado 'MyAd' mediante el uso del 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 llamado 'MyConnection' mediante el uso del 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>

Puede hacer referencia al objeto 'MyAd' desde cualquier página en la aplicación ASP:

Un archivo .ASP:

<%=MyAd.GetAdvertisement("/banners/adrot.txt")%>


Declaración de TypeLibrary

TypeLibrary (biblioteca de tipos) es un contenedor que contiene archivos DLL correspondientes a objetos 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 también puede informar mejor los errores. Si su aplicación web depende de objetos COM cuyos tipos de datos están declarados en una biblioteca de tipos, puede declarar la biblioteca de tipos en Global.asa.

Sintaxis

<!--METADATA TYPE="TypeLib"
file="filename" uuid="id" version="number" lcid="localeid"
-->

Parámetro Descripción
file Especifica la ruta absoluta a la biblioteca de tipos.

El parámetro file o el parámetro uuid, uno de los dos es obligatorio.

uuid Especifica el identificador único de la biblioteca de tipos.

El parámetro file o el parámetro uuid, uno de los dos es obligatorio.

version Opcional. Se utiliza para seleccionar la versión. Si no se encuentra la versión requerida, se utilizará la versión más cercana.
lcid Opcional. Especifica el identificador de configuración regional para la biblioteca de tipos.

Valores de error

El servidor devolverá uno de los siguientes mensajes de error:

Código de error Descripción
ASP 0222 Especificación de biblioteca de tipos no válida
ASP 0223 No se encontró la biblioteca de tipos
ASP 0224 No se pudo cargar la biblioteca de tipos
ASP 0225 No se pudo envolver la biblioteca de tipos

Nota:La etiqueta METADATA puede aparecer en cualquier lugar del archivo Global.asa (dentro o fuera de las etiquetas <script>). Sin embargo, recomendamos colocar la etiqueta METADATA en la parte superior del archivo Global.asa.


Restricciones

Restricciones sobre lo que se puede referenciar en el archivo Global.asa:

  • No puede mostrar texto desde el archivo Global.asa. Este archivo no puede mostrar información.
  • Solo puede usar los objetos Server y Application en las subrutinas Application_OnStart y Application_OnEnd. En la subrutina Session_OnEnd, puede usar los objetos Server, Application y Session. En la subrutina Session_OnStart, puede usar cualquier objeto integrado.

Cómo usar subrutinas

Global.asa se utiliza a menudo para inicializar variables.

El siguiente ejemplo demuestra cómo detectar el momento exacto en que un visitante llega por primera vez al sitio web. El tiempo se almacena en un objeto de Session llamado 'started', y el valor de la variable 'started' puede ser accedido por cualquier página ASP en la aplicación:

<script language="vbscript" runat="server">
sub Session_OnStart
Session("started")=now()
end sub
</script>

Global.asa también se puede usar para controlar el acceso a las páginas.

El siguiente ejemplo demuestra 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>

Puede incluir funciones en el archivo Global.asa.

En el siguiente ejemplo, cuando el servidor web se inicia, la subrutina Application_OnStart también se inicia. Luego, la subrutina Application_OnStart llama a otra subrutina llamada 'getcustomers'. La subrutina 'getcustomers' abre una base de datos y luego recupera un conjunto de registros de la tabla 'customers'. Este conjunto de registros se asigna a una matriz, y cualquier página ASP puede acceder a esta matriz 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.

  • Cuando el servidor se inicia, Application_OnStart establece el valor de la variable de Application 'visitors' a 0.
  • Cada vez que llega un nuevo visitante, la subrutina Session_OnStart incrementa la variable 'visitors' en 1.
  • Cada vez que se activa la subrutina Session_OnEnd, esta subrutina disminuye la variable 'visitors' en 1.

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>

En el archivo ASP, muestre el número de visitantes actuales:

<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p>There are <%response.write(Application("visitors"))%> online now!</p>
</body>
</html>

Otras extensiones