Arquivo Global.asa ASP

O arquivo Global.asa é um arquivo opcional que pode conter declarações de objetos, variáveis e métodos que podem ser acessados por cada página do aplicativo ASP. Todos os scripts válidos de navegador podem ser usados no Global.asa.

Arquivo Global.asa

O arquivo Global.asa é um arquivo opcional que pode conter declarações de objetos, variáveis e métodos que podem ser acessados por cada página do aplicativo ASP. Todos os scripts válidos de navegador podem ser usados no Global.asa.

O arquivo Global.asa pode conter o seguinte conteúdo:

  • Evento de Aplicação
  • Evento de Sessão
  • Declaração <object>
  • Declaração de TypeLibrary
  • Instrução #include

Comentários:O arquivo Global.asa deve ser armazenado no diretório raiz do aplicativo ASP e cada aplicativo pode ter apenas um arquivo Global.asa.

Evento no Global.asa

No Global.asa, podemos informar o que a aplicação e o objeto de sessão fazem ao iniciar e ao encerrar. O código para essa tarefa é colocado no manipulador de eventos. O arquivo Global.asa pode conter quatro tipos de eventos:

Application_OnStart - Este evento ocorre quando o primeiro usuário chama a primeira página do aplicativo ASP. Este evento ocorre quando o servidor web reinicia ou o arquivo Global.asa é editado. O evento "Session_OnStart" ocorre imediatamente após este evento.

Session_OnStart - Este evento ocorre sempre que um novo usuário solicita sua primeira página no aplicativo ASP.

Session_OnEnd - Este evento ocorre sempre que um usuário encerra sua sessão. Dentro do tempo definido (o evento padrão é de 20 minutos) sem solicitações de página, a sessão encerra.

Application_OnEnd - Este evento ocorre após o último usuário encerrar sua sessão. A situação típica é que este evento ocorra quando o servidor web para. Este subprograma é usado para limpar configurações após o encerramento do aplicativo, como excluir registros ou escrever informações em um arquivo de texto.

O arquivo Global.asa pode ser semelhante a este:

<script language="vbscript" runat="server">
sub Application_OnStart
  'algum código
fim sub
sub Application_OnEnd
  'algum código
fim sub
sub Session_OnStart
  'algum código
fim sub
sub Session_OnEnd
  'algum código
fim sub
</script>

Comentários:Devido ao fato de não poder usar o delimitador de script do ASP (<% e %>) para inserir scripts no arquivo Global.asa, precisamos usar o elemento HTML <script>.

Declaração <object>

Você pode criar objetos com escopo de sessão ou aplicação usando a tag <object> no arquivo Global.asa.

Comentários:O标签 <object> deve estar fora do tag <script>.

Sintaxe:

<object runat="server" scope="scope" id="id"
{progid="progID"|classid="classID"}>
....
</object>
Parâmetro Descrição
escopo Defina o escopo (ou alcance) do objeto (Sessão ou Aplicação).
id Especifique um id único para o objeto.
ProgID

ID associado ao ClassID. O formato do ProgID é: [Vendor.]Componente[.Versão].

O ProgID ou ClassID deve ser especificado.

ClassID

Especifique um id único para o objeto da classe COM.

O ProgID ou ClassID deve ser especificado.

instância

A primeira instância cria um objeto chamado "MyAd" usando o parâmetro ProgID e define o escopo como session:

<object runat="server" escopo="session" id="MyAd" progid="MSWC.AdRotator"
</object>

A segunda instância cria um objeto chamado "MyConnection" usando o parâmetro ClassID:

<object runat="server" escopo="application" id="MyConnection"
classid="Clsid:8AD3067A-B3FC-11CF-A560-00A0C9081C21"
</object>

Os objetos declarados neste arquivo Global.asa podem ser usados por qualquer script do aplicativo.

GLOBAL.ASA:

<object runat="server" escopo="session" id="MyAd" progid="MSWC.AdRotator"
</object>

Você pode referenciar o objeto "MyAd" em qualquer página do ASP aplicativo:

Um arquivo .ASP:

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

Declaração de TypeLibrary

TypeLibrary (Biblioteca de Tipos) é um contêiner que contém os arquivos DLL correspondentes aos objetos COM. Ao incluir chamadas para TypeLibrary no Global.asa, é possível acessar constantes dos objetos COM, e o código ASP também pode relatar erros de forma mais eficiente. Se o aplicativo do seu site depende de objetos COM cujos tipos foram declarados na biblioteca de tipos, você pode declarar a biblioteca de tipos no Global.asa.

Sintaxe:

<!--METADATA TYPE="TypeLib"
file="filename"
uuid="typelibraryuuid"
version="versionnumber"
lcid="localeid"
-->
Parâmetro Descrição
file Define o caminho absoluto para a biblioteca de tipos. Parâmetros file ou uuid, ambos são obrigatórios.
uuid Define um identificador único para a biblioteca de tipos. Parâmetros file ou uuid, ambos são obrigatórios.
version Opcional. Usado para escolher a versão. Se a versão especificada não for encontrada, será usada a versão mais próxima.
lcid Opcional. Identificador regional da biblioteca de tipos.

Valor de erro

O servidor retornará uma das seguintes mensagens de erro:

Erro Código Descrição
ASP 0222 Especificação inválida da biblioteca de tipos
ASP 0223 Type library not found
ASP 0224 Type library cannot be loaded
ASP 0225 Type library cannot be wrapped

Comentários:A etiqueta METADATA pode estar em qualquer lugar do arquivo Global.asa (tanto dentro quanto fora da etiqueta <script>). No entanto, ainda recomendamos colocar a etiqueta METADATA no topo do arquivo Global.asa.

Limitações

Limitações sobre o conteúdo que pode ser referenciado no arquivo Global.asa:

Você não pode exibir o texto do arquivo Global.asa. Este arquivo não pode exibir informações.

Você pode usar os objetos Server e Application apenas nos subrotinas Application_OnStart e Application_OnEnd. No subrotina Session_OnEnd, você pode usar os objetos Server, Application e Session. No subrotina Session_OnStart, você pode usar qualquer objeto interno.

Como usar subrotinas

Global.asa é frequentemente usado para inicializar variáveis.

O exemplo a seguir mostra como detectar o tempo exato de chegada do visitante ao site. O tempo é armazenado no objeto Session chamado "started", e o valor da variável "started" pode ser acessado por qualquer página ASP no aplicativo:

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

Global.asa também pode ser usado para controlar o acesso às páginas.

O exemplo a seguir mostra como redirecionar cada novo visitante para outra página, neste exemplo será redirecionado para a página "newpage.asp":

<script language="vbscript" runat="server">
sub Session_OnStart
Response.Redirect("newpage.asp")
fim sub
</script>

Também podemos incluir funções no Global.asa.

No exemplo a seguir, quando o servidor web é iniciado, também é iniciado o subrotina Application_OnStart. Em seguida, o subrotina Application_OnStart chama outro subrotina chamado "getcustomers". O subrotina "getcustomers" abre um banco de dados e então pega um conjunto de registros da tabela "customers". Este conjunto de registros é atribuído a um array, então qualquer página ASP pode acessar este array sem consultar o banco de dados:

<script language="vbscript" runat="server">
sub Application_OnStart
getcustomers
fim 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
fim sub
</script>

Instância Global.asa

Neste exemplo,我们要创建一个可以计算当前访客数量的 Global.asa 文件。

Application_OnStart define o valor da variável Application "visitors" para 0 ao iniciar o servidor.

Cada vez que um novo usuário visitar, o subrotina Session_OnStart adicionará 1 ao valor da variável "visitors".

Cada vez que o subrotina Session_OnEnd for acionada, este subrotina subtrairá 1 do valor da variável "visitors".

Arquivo Global.asa:

<script language="vbscript" runat="server">
Sub Application_OnStart
Application("visitors")=0
Fim Sub
Sub Session_OnStart
Application.Lock
Application("visitors")=Application("visitors")+1
Application.UnLock
Fim Sub
Sub Session_OnEnd
Application.Lock
Application("visitors")=Application("visitors")-1
Application.UnLock
Fim Sub
</script>

Este arquivo ASP exibirá o número atual de usuários:

<html>
<head>
</head>
<body>
<p>Existem <%response.write(Application("visitors"))%> online agora!</p>
</body>
</html>