Använd global.asa för din webbserver i asp
Förord
När vi pratar om global.asa så är det ungefär som att prata om pc's autoexec.bat. Denna fil placeras i rootkatalogen på din webbserver och kan därifrån användas över hela din site. Global.asa körs varje gång en användare kommer till din sida och då aktiveras session_onstart. Det innebär att därifrån kan du tilldela variabler som du sedan använder på din hemsida som är unika för användaren. När det gäller application_onstart så körs den när servern startas upp. global.asa placeras företrädesvis i c:\inetpub\wwwroot på din dators webbserver.Innehåll
Relaterade artiklar
» En besöksräknare håller reda på dagens alla besök» Skapa en besöksräknare med ASP.NET
När vi talar om Application("x") och Session("x") så är det två olika variabler som vi kan delarera, jag skall förklara lite om dess likhet men framförallt om dess skillnad.
Application()
Som namnet antyder gäller detta något som är för hela applikationen eller i detta fall hela siten. Om du deklarerar ett värde som Application() så kommer alla användare åt samma värde. Som du nedan ser så är det en besöksräknare som exempel. Hade vi skrivit Session() så skulle inte alla användare kunnat komma åt detta utan den enskilde besökaren.
Session()
Till skillnad från Application så är Session() variablerna unika för varje besökare. Det innebär att exempelvis för och efternamn, mailadress och annat kan sättas i dessa sessions-variabler och kommer vara unikt för varje person.
Vad som skall skrivas i Application("x") eller Session("x") är helt valfritt, du hittar på ett lämpligt namn. Vi kan ta några korta exempel:
Application("dsn") = "provider={microsoft access ....;"
Session("namn") = "användarens namn"
Session("email") = "användarens email"
Tips! Jag har sett programmerare som deklarerar en connectionsträng för databasen i sessionsobjektet. Gör INTE det, det räcker med att den ligger i Application-objektet. Sätter du den i Session() objektet kommer ett sessionsobjekt skapas för varje besökare som kommer till din hemsida och det är onödigt - för connectionsträngen till databasen är alltid densamma.
En vanlig global.asa brukar se ut så här:
Detta exempel ovan har två Subrutiner, en som körs när servern startas (Application_OnStart) samt en som körs när varje användare kommer till siten (Session_OnStart). Det finns två sub-rutiner till och dessa är:
Subrutinen Session_OnEnd aktiveras varje gång en användare går från sidan eller att det står Session.Abandon. Exemplet ovan minskar antalet aktiva användare med 1 så vi kommer rätt.Application_OnEnd startas när servern stängs ner.
För att sedan på din sida visa detta från någon av dina asp-sidor så skriver du exempelvis:
Av bister erfarenhet så triggas inte alltid Session_OnEnd då användare lämnar din hemsida så ta inte och bygg för stora system som kräver precision rörande detta..
Var denna artikeln användbar?
Om du gör någon intressant (eller kanske något konstigt fel) på grund av detta material så skicka gärna det med ett mail eller bifoga en länk till mig så presenterar jag detta som ytterligare exempelfiler för kursen. Om detta innehållet är felaktigt eller du lärt dig fler finesser så skriv gärna en rad eller varför inte en egen kurs baserat på dina erfarenheter. Sänd gärna in dina tips till denna artikel.
/Pelle Johansson
Application()
Som namnet antyder gäller detta något som är för hela applikationen eller i detta fall hela siten. Om du deklarerar ett värde som Application() så kommer alla användare åt samma värde. Som du nedan ser så är det en besöksräknare som exempel. Hade vi skrivit Session() så skulle inte alla användare kunnat komma åt detta utan den enskilde besökaren.
Session()
Till skillnad från Application så är Session() variablerna unika för varje besökare. Det innebär att exempelvis för och efternamn, mailadress och annat kan sättas i dessa sessions-variabler och kommer vara unikt för varje person.
Vad som skall skrivas i Application("x") eller Session("x") är helt valfritt, du hittar på ett lämpligt namn. Vi kan ta några korta exempel:
Application("dsn") = "provider={microsoft access ....;"
Session("namn") = "användarens namn"
Session("email") = "användarens email"
Tips! Jag har sett programmerare som deklarerar en connectionsträng för databasen i sessionsobjektet. Gör INTE det, det räcker med att den ligger i Application-objektet. Sätter du den i Session() objektet kommer ett sessionsobjekt skapas för varje besökare som kommer till din hemsida och det är onödigt - för connectionsträngen till databasen är alltid densamma.
En vanlig global.asa brukar se ut så här:
Detta exempel ovan har två Subrutiner, en som körs när servern startas (Application_OnStart) samt en som körs när varje användare kommer till siten (Session_OnStart). Det finns två sub-rutiner till och dessa är:
Sub Application_OnEnd()
End Sub
Sub Session_OnEnd
Application.Lock
Application("VisitorCount") =
Application("VisitorCount") - 1
Application.UnLock
End Sub
Subrutinen Session_OnEnd aktiveras varje gång en användare går från sidan eller att det står Session.Abandon. Exemplet ovan minskar antalet aktiva användare med 1 så vi kommer rätt.Application_OnEnd startas när servern stängs ner.
För att sedan på din sida visa detta från någon av dina asp-sidor så skriver du exempelvis:
<%
Option Explicit
Response.Write "OnLine: " & Application("VisitorCount") & "
"
Response.Write "Totalt: " & Application("UserCount")
%>
Av bister erfarenhet så triggas inte alltid Session_OnEnd då användare lämnar din hemsida så ta inte och bygg för stora system som kräver precision rörande detta..
Var denna artikeln användbar?
Om du gör någon intressant (eller kanske något konstigt fel) på grund av detta material så skicka gärna det med ett mail eller bifoga en länk till mig så presenterar jag detta som ytterligare exempelfiler för kursen. Om detta innehållet är felaktigt eller du lärt dig fler finesser så skriv gärna en rad eller varför inte en egen kurs baserat på dina erfarenheter. Sänd gärna in dina tips till denna artikel.
/Pelle Johansson
Jonas Boman
Att ha en besöksräknare i global.asa är väl kanske inte så smidigt så den nollställs om webbservern startas om?!
Bobo Svensson
en lättförståerlig förklaring av global . asa