Hantera sessionsvariabler i ASP.NET # 2
Förord
I del 1 gick vi igenom hur man kan kapsla in sessionsvariablerna i en klass. I detta avsnitt så går vi igenom hur sajten konfigureras för att fungera med sessionsobjektet.
Val för lagring av sessionsvariabler
I traditionell ASP hanterar IIS endast sessionsvariabler in-process, dvs med IIS processen. Startar man om servern så är variablerna inte kvar. Samma konfiguration är standard i ASP.NET.I ASP.NET kan man placera variablerna i en StateServer eller låta informationen sparas i en SQL databas. De som har behov av detta är sajter som lastbalanseras, dvs har många besökare och/eller höga krav på tillgänglighet. Den som väljer någon av dessa lösningar får också räkna med något sämre prestanda.
Generellt sett kan vi nog nöja med in-process varianten, uppstår annat behov så konfigurera om. Man skall tänka på att inte stoppa in "onödigt" stora objekt i sessionsvariabler för att det tar minne eller lagringsplats i databasen. Oftast är det bättre att optimera databasanropen och hämta informationen när den behövs.
Inställningarna för sessionsvariabler gör i Web.config-filen. Följande exempel visar hur vanlig in-process sessioner konfigureras.
...
Timeout attributet är tiden i minuter innan inaktiv session dör.
Instansiera WebVisitor klassen
För att kunna använda objektet i våra sidor måste vi först skapa en instans som lagras i sessionsobjektet. Global.asax.vb filen har i princip samma uppgift som Global.asa i traditionell ASP. Största skillnaden är att det nu finns betydligt fler händelser som man kan nyttja. I det här fallet använder vi Session_OnStart precis som i traditionell ASP.
Public Class Global
Inherits System.Web.HttpApplication
Sub Session_OnStart(ByVal sender As Object, _
ByVal e As EventArgs)
Session(WebVisitor.CookieAndContextKey) = _
New WebVisitor()
End Sub
...
End Class
Demosajt
Del 1 & 2 finns kan laddas ned som en enkel demo. Nedladdningen består av en installationsfil och förutsätter att du redan har installerat .NET Framework.
Fil: sessionvar.zip
Visitor egenskapen kan även användas direkt i aspx-filen.
Nästa del...
I nästa del slår vi av sessionerna och skickar istället informationen till besökaren som en cookie.
0 Kommentarer