ASP Die Global.asa-lêer


Die Global.asa-lêer

Die Global.asa-lêer is 'n opsionele lêer wat verklarings van voorwerpe, veranderlikes en metodes kan bevat wat deur elke bladsy in 'n ASP-toepassing verkry kan word.

Alle geldige blaaierskrifte (JavaScript, VBScript, JScript, PerlScript, ens.) kan binne Global.asa gebruik word.

Die Global.asa-lêer kan slegs die volgende bevat:

  • Toepassingsgeleenthede
  • Sessie gebeure
  • <object> verklarings
  • TypeLibrary verklarings
  • die #insluit-instruksie

Let wel: Die Global.asa-lêer moet in die wortelgids van die ASP-toepassing gestoor word, en elke toepassing kan slegs een Global.asa-lêer hê.


Gebeure in Global.asa

In Global.asa kan jy vir die toepassing en sessie-objekte sê wat om te doen wanneer die toepassing/sessie begin en wat om te doen wanneer die toepassing/sessie eindig. Die kode hiervoor word in gebeurtenishanteerders geplaas. Die Global.asa-lêer kan vier tipes gebeurtenisse bevat:

Application_OnStart - Vind plaas wanneer die EERSTE gebruiker die eerste bladsy in 'n ASP-toepassing oproep. Hierdie gebeurtenis vind plaas nadat die webbediener herbegin is of nadat die Global.asa-lêer geredigeer is. Die "Session_OnStart" gebeurtenis vind plaas onmiddellik na hierdie gebeurtenis.

Session_OnStart - Hierdie gebeurtenis vind plaas ELKE keer as 'n NUWE gebruiker sy of haar eerste bladsy in die ASP-toepassing versoek.

Session_OnEnd - Hierdie gebeurtenis vind plaas ELKE keer as 'n gebruiker 'n sessie beëindig. 'n Gebruikersessie eindig nadat 'n bladsy vir 'n bepaalde tyd nie deur die gebruiker aangevra is nie (by verstek is dit 20 minute).

Application_OnEnd - Hierdie gebeurtenis vind plaas nadat die LAASTE gebruiker die sessie beëindig het. Tipies vind hierdie gebeurtenis plaas wanneer 'n webbediener stop. Hierdie prosedure word gebruik om instellings skoon te maak nadat die toepassing gestop het, soos om rekords uit te vee of inligting na tekslêers te skryf.

'n Global.asa-lêer kan iets soos volg lyk:

<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>

Let wel: Omdat ons nie die ASP script delimiters (<% en %>) kan gebruik om skrifte in die Global.asa lêer in te voeg nie, plaas ons subroetines binne 'n HTML <script> element.



<object> Verklarings

Dit is moontlik om voorwerpe met sessie- of toepassingsomvang in Global.asa te skep deur die <object>-merker te gebruik.

Let wel: Die <object> tag moet buite die <script> tag wees!

Sintaksis

<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.

Voorbeelde

Die eerste voorbeeld skep 'n objek van sessie-omvang genaamd "MyAd" deur die ProgID-parameter te gebruik:

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

Die tweede voorbeeld skep 'n objek van toepassingsomvang genaamd "MyConnection" deur die ClassID-parameter te gebruik:

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

Die voorwerpe wat in die Global.asa-lêer verklaar word, kan deur enige skrif in die toepassing gebruik word:

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")%>

Tipe Biblioteekverklarings

'n TypeLibrary is 'n houer vir die inhoud van 'n DLL-lêer wat ooreenstem met 'n COM-voorwerp. Deur 'n oproep na die TypeLibrary in die Global.asa-lêer in te sluit, kan die konstantes van die COM-voorwerp verkry word, en foute kan beter deur die ASP-kode gerapporteer word. As jou webtoepassing staatmaak op COM-objekte wat datatipes in tipe biblioteke verklaar het, kan jy die tipe biblioteke in Global.asa verklaar.

Sintaksis

<!--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

Foutwaardes

Die bediener kan een van die volgende foutboodskappe terugstuur:

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

Let wel: METADATA-merkers kan enige plek in die Global.asa-lêer verskyn (beide binne en buite <script>-merkers). Dit word egter aanbeveel dat METADATA-merkers naby die bokant van die Global.asa-lêer verskyn.


Beperkings

Beperkings op wat jy by die Global.asa-lêer kan insluit:

  • Jy kan nie teks vertoon wat in die Global.asa-lêer geskryf is nie. Hierdie lêer kan nie inligting vertoon nie
  • Jy kan slegs Bediener- en Toepassingsobjekte in die Application_OnStart en Application_OnEnd subroetines gebruik. In die Session_OnEnd-subroetine kan jy Bediener-, Toepassings- en Sessie-objekte gebruik. In die Session_OnStart-subroetine kan jy enige ingeboude voorwerp gebruik

Hoe om die subroetines te gebruik

Global.asa word dikwels gebruik om veranderlikes te inisialiseer. 

Die voorbeeld hieronder wys hoe om die presiese tyd op te spoor wat 'n besoeker die eerste keer op 'n webwerf aankom. Die tyd word gestoor in 'n Sessie-veranderlike genaamd "begin", en die waarde van die "begin" veranderlike kan verkry word vanaf enige ASP-bladsy in die toepassing:

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

Global.asa kan ook gebruik word om bladsytoegang te beheer.

Die voorbeeld hieronder wys hoe om elke nuwe besoeker na 'n ander bladsy te herlei, in hierdie geval na 'n bladsy genaamd "newpage.asp":

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

En jy kan funksies in die Global.asa-lêer insluit.

In die voorbeeld hieronder vind die Application_OnStart-subroetine plaas wanneer die webbediener begin. Dan roep die Application_OnStart-subroetine 'n ander subroetine genaamd "getcustomers". Die "getcustomers"-subroetine maak 'n databasis oop en haal 'n rekordstel van die "customers"-tabel af. Die rekordstel word aan 'n skikking toegewys, waar dit vanaf enige ASP-bladsy verkry kan word sonder om die databasis navraag te doen:

<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>

Global.asa Voorbeeld

In hierdie voorbeeld sal ons 'n Global.asa-lêer skep wat die aantal huidige besoekers tel.

  • Die Application_OnStart stel die toepassingsveranderlike "besoekers" op 0 wanneer die bediener begin
  • Die Session_OnStart-subroetine voeg een by die veranderlike "besoekers" elke keer as 'n nuwe besoeker opdaag
  • Die Session_OnEnd-subroetine trek een van "besoekers" af elke keer as hierdie subroetine geaktiveer word

Die Global.asa-lêer:

<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>

Om die aantal huidige besoekers in 'n ASP-lêer te vertoon:

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