ASP Global.asa fil

Global.asa-filen er en valgfri fil, der kan indeholde objekter, variabler og metoder, der kan tilgås af hver side i ASP-applikationen. Alle gyldige browser-skript kan bruges i Global.asa.

Global.asa-filen

Global.asa-filen er en valgfri fil, der kan indeholde objekter, variabler og metoder, der kan tilgås af hver side i ASP-applikationen. Alle gyldige browser-skript kan bruges i Global.asa.

Global.asa-filen kan indeholde følgende indhold:

  • Application-hændelse
  • Session-hændelse
  • <object> erklæring
  • TypeLibrary-deklaration
  • #include-instruktion

Kommentarer:Global.asa-filen skal opbevares i ASP-applikationens rodmappe, og hver applikation kan kun have én Global.asa-fil.

Event i Global.asa

I Global.asa kan vi fortælle application- og session-objekterne, hvad de skal gøre ved opstart og afslutning. Koden, der udfører dette opgave, placeres i eventhandleren. Global.asa-filen kan indeholde fire typer events:

Application_OnStart - Dette event udløses, når den første bruger kalder sin første side i ASP-applikationen. Dette event udløses også, når webserveren genstartes eller Global.asa-filen redigeres. "Session_OnStart"-eventet udløses umiddelbart efter dette event.

Session_OnStart - Dette event udløses hver gang en ny bruger anmoder om sin første side i ASP-applikationen.

Session_OnEnd - Dette event udløses hver gang en bruger afslutter sin session. Hvis der ikke anmodes om en side inden for en bestemt tid (standardtiden er 20 minutter), afsluttes sessionen.

Application_OnEnd - Dette event udløses efter det sidste bruger har afsluttet sin session. Typisk sker dette, når webserveren stopper. Denne subprogram bruges til at rydde op efter at applikationen er stoppet, f.eks. slette poster eller skrive information til en tekstfil.

Global.asa-filen kan se sådan ud:

<script language="vbscript" runat="server">
sub Application_OnStart
  'nogle kode
end sub
sub Application_OnEnd
  'nogle kode
end sub
sub Session_OnStart
  'nogle kode
end sub
sub Session_OnEnd
  'nogle kode
end sub
</script>

Kommentarer:Da vi ikke kan bruge ASP's skriptadskillelse (<% og %>) til at indsætte script i Global.asa-filen, skal vi bruge HTML's <script>-element.

<object> erklæring

Du kan oprette objekter med session eller application-omfang ved hjælp af <object>-tagget i Global.asa-filen.

Kommentarer:Et <object>-tag skal placeres uden for <script>-tagget.

Syntaks:

<object runat="server" scope="scope" id="id"
{progid="progID"|classid="classID"}>
....
</object>
parameter beskrivelse
scope Indstil objektets omfang (Session eller Application).
id Tildel et unikt id til objektet.
ProgID

ID knyttet til ClassID. ProgID-formatet er: [Vendor.]Component[.Version].

ProgID eller ClassID skal specificeres.

ClassID

Tildel et unikt id til COM-klassenobjekt.

ProgID eller ClassID skal specificeres.

eksempel

den første instans opretter et "MyAd" med brug af ProgID-parametret som session-objekt med rækkevidde:

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

den anden instans opretter en "MyConnection" med brug af ClassID-parametret.

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

Disse objekter, der deklareres i denne Global.asa-fil, kan bruges af alle scripts i applikationen.

GLOBAL.ASA:

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

Du kan citere "MyAd"-objektet fra hvilken som helst side i din ASP-applikation:

en .ASP-fil:

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

TypeLibrary-deklaration

TypeLibrary (typebibliotek) er en container, der indeholder DLL-filer, der svarer til COM-objekter. Ved at inkludere kald til TypeLibrary i Global.asa kan man få adgang til konstanter for COM-objekter, og ASP-kode kan rapportere fejl bedre. Hvis din sites applikation afhænger af COM-objekter, der allerede er deklarerede dataTyper i typebiblioteket, kan du deklarere typebiblioteket i Global.asa.

Syntaks:

<!--METADATA TYPE="TypeLib"
file="filename"
uuid="typelibraryuuid"
version="versionnumber"
lcid="localeid"
-->
parameter beskrivelse
file definerer den absolute sti til typebiblioteket. Parameteren file eller uuid er obligatorisk, begge må være angivet.
uuid definerer en unik identifikator for typebiblioteket. Parameteren file eller uuid er obligatorisk, begge må være angivet.
version valgfri. Bruges til at vælge version. Hvis den specifikke version ikke findes, bruges den nærmeste version.
lcid valgfri. Bruges som regionidentifikator for typebiblioteket.

fejlværdi

serveren vil returnere en af følgende fejlmeddelelser:

fejl kode beskrivelse
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

Kommentarer:METADATA-tagen kan placeres i Global.asa-filen ethvert sted (både inde og uden for <script>-tagget). Vi anbefaler dog at placere METADATA-tagen i toppen af Global.asa-filen.

Begrænsninger

Begrænsninger for, hvad der kan refereres til i Global.asa-filen:

Du kan ikke vise teksten i Global.asa-filen. Denne fil kan ikke vise information.

Du kan kun bruge Server- og Application-objekterne i Application_OnStart- og Application_OnEnd-underprogrammerne. I Session_OnEnd-underprogrammet kan du bruge Server, Application og Session-objekterne. I Session_OnStart-underprogrammet kan du bruge alle indbyggede objekter.

Sådan bruges subroutiner

Global.asa bruges ofte til at initialisere variabler.

Nedenstående eksempel viser, hvordan man kan detektere den præcise tid, en besøger første gang kommer til webstedet. Tiden gemmes i en Session-objekt kaldet "started", og værdien af "started" variablen kan fås af enhver ASP-side i applikationen:

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

Global.asa kan også bruges til at kontrollere adgang til sider.

Nedenstående eksempel viser, hvordan hver ny besøger kan omdirigeres til en anden side, i dette eksempel vil det være til siden "newpage.asp":

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

Vi kan også inkludere funktioner i Global.asa.

I de næste eksempler, når webserveren starter, starter Application_OnStart underprogrammet også. Derefter kalder Application_OnStart underprogrammet et andet underprogram kaldet "getcustomers". "getcustomers" underprogrammet åbner en database og henter en recordset fra "customers" tabellen. Denne recordset tildeling til en array, uden at søge i databasen, kan enhver ASP-side få adgang til denne array:

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

I dette eksempel skal vi oprette en Global.asa-fil, der kan beregne det aktuelle antal besøgende.

Application_OnStart sætter værdien af Application-variablen "visitors" til 0, når serveren starter.

Hver gang en ny bruger besøger, tilføjes 1 til variablen "visitors" af Session_OnStart-subrutinen.

Hver gang Session_OnEnd-subrutinen aktiveres, reduceres variablen "visitors" med 1.

Global.asa-filen:

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

Denne ASP-fil viser antallet af nutidige brugere:

<html>
<head>
</head>
<body>
<p>Der er <%response.write(Application("visitors"))%> online nu!</p>
</body>
</html>