ASP Session objekt

Session-objektet används för att lagra användarinformation. Variabler som lagras i session-objektet innehåller information för en enskild användare och är tillgängliga för alla sidor i en applikation.

Session-objekt

När du manipulerar en applikation öppnar du den, gör några ändringar och stänger den. Det liknar en konversation (session). Datorn vet vem du är. Den vet när du öppnar och stänger applikationen. Men det finns ett problem på internet: eftersom HTTP-adresser inte kan behålla tillstånd, vet inte webbservern vem du är eller vad du har gjort.

ASP löser detta problem genom att skapa en unik cookie för varje användare. Cookien skickas till klienten och innehåller information som kan identifiera användaren. Detta gränssnitt kallas session-objekt.

Session-objektet används för att lagra information om användare eller för att ändra inställningar för en användares session. Variablerna som lagras i session-objektet innehåller information om en enskild användare och är tillgängliga för alla sidor i applikationen. Informationen som lagras i session-objektet är vanligtvis namn, id och parametrar. Servern skapar en ny session för varje ny användare och avslutar session-objektet när sessionen löper ut.

När börjar sessionen?

Session börjar:

  • När en ny användare gör en förfrågan till en ASP-fil och Global.asa-filen refererar till Session_OnStart-subprogrammet;
  • När ett värde lagras i Session-variabeln;
  • När en användare gör en förfrågan till en ASP-fil och Global.asa använder <object>-taggen för att skapa ett objekt genom sessionens scope;

När avslutas sessionen?

Om användaren inte har gjort en förfrågan eller uppdaterat sidan inom det förutbestämda tiden i applikationen, kommer sessionen att avslutas. Standardvärdet är 20 minuter.

Om du vill ställa in en längre eller kortare timeout-tid kan du ställa in Timeout Egenskap.

Följande exempel sätter en timeout-intervall på 5 minuter:

<%
Session.Timeout=5
%>

För att omedelbart avsluta sessionen kan du använda Abandon Metod:

<%
Session.Abandon
%>

Observera:Huvudproblemet med användning av session är när de bör avslutas. Vi vet inte om användarens senaste förfrågan är den sista förfrågan. Därför vet vi inte hur länge sessionen bör "leva". Att vänta för länge på en inaktiv session kan använda upp serverns resurser. Men om sessionen tas bort för tidigt, måste användaren börja om igen och igen, eftersom servern har tagit bort all information. Att hitta en lämplig timeout-intervall är svårt.

Tips:Om du använder session-variabler, bör du inte lagra mycket data i dem.

Lagra och hämta session-variabler

Den största fördelen med Session-objektet är att variabler kan lagras i det för att läsas av senare webbsidor, dess tillämpningsområde är mycket brett.

Följande exempel tilldelar "Donald Duck" till session-variabeln med namnet username och tilldelar "50" till session-variabeln med namnet age:

<%
Session("username")="Donald Duck"
Session("age")=50
%>

När värdet lagras i session-variabeln, kan det användas av alla sidor i ASP-applikationen:

Välkommen <%Response.Write(Session("username"))%>

Resultatet av följande rad är: "Välkommen Donald Duck".

Du kan också lagra användarparametrar i session-objektet och sedan använda dessa parametrar för att avgöra vilken sida som ska returneras till användaren.

I följande exempel specificeras att om användaren använder en låg skärmdelning, returneras en ren textversion av sidan:

<%If Session("screenres")="low" Then%> 
  Detta är textversionen av sidan
<%Else%> 
  Detta är den multimediasversionen av sidan
<%End If%>

Ta bort session-variabler

Contents-kollektionen innehåller alla session-variabler.

Du kan använda remove-metoden för att ta bort session-variabler.

I följande exempel, om session-variabeln "age" är mindre än 18, tas session-variabeln "sale" bort:

<%
Om Session.Contents("age")<18 then 
  Session.Contents.Remove("sale")
End If 
%>

Om du vill ta bort alla variabler från sessionen, använd RemoveAll-metoden:

<%
Session.Contents.RemoveAll()
%>

Traversera contents-kollektionen

Contents-kollektionen innehåller alla session-variabler. Genom att traversera contents-kollektionen kan du se vilka variabler som lagras där:

<%
Session("username")="Donald Duck"
Session("age")=50
dim i
För varje i i Session.Contents
  Response.Write(i & "<br />")
Next
%>

Resultat:

username
age

Om du behöver veta antalet objekt i contents-kollektionen, kan du använda count-attributet:

<%
dim i
dim j
j=Session.Contents.Count
Response.Write("Session variables: " & j)
För i=1 till j
  Response.Write(Session.Contents(i) & "<br />")
Next
%>

Resultat:

Session variables: 2
Donald Duck
50

Genomgå StaticObjects kollektionen

Genom att loopen StaticObjects kollektionen kan du se alla värden som lagras i session-objektet:

<%
dim i
För varje i i Session.StaticObjects
  Response.Write(i & "<br />")
Next
%>