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í:
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>
| 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>
El segundo ejemplo crea un objeto de ámbito de aplicación llamado 'MyConnection' mediante el uso del parámetro ClassID:
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:
<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
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:
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':
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:
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:
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:
<html>
<head>
</head>
<body>
<p>There are <%response.write(Application("visitors"))%> online now!</p>
</body>
</html>
Otras extensiones