Das Sitzungsobjekt der ASP -Technologie (Active Server Pages) wird verwendet, um private Informationen von Benutzern während der Konversationen zu speichern. Die im Sitzungsobjekt des aktuellen Benutzer definierten Variablen und Objekte können zwischen Seiten geteilt werden, können jedoch nicht von anderen Benutzern in der Anwendung zugegriffen werden. Statusinformationen.
Das Sitzungsobjekt verfügt über eine sehr wichtige Eigenschaft: Timeout, mit der das Session -Objekt festgelegt wird, bevor die Sitzungsressource veröffentlicht wird (der Standardwert beträgt 20 Minuten). Wenn der Zeitwert, der von der Timeout -Eigenschaft festgelegt ist, erschöpft ist, wird die Sitzungsressource veröffentlicht. Zerstören Sie das Sitzungsobjekt durch das Timeout -Attribut, vermeiden Sie das Sitzungsobjekt, das auf dem Server ohne Einschränkungen generiert wird, und schützen Sie die Serverressourcen. In der tatsächlichen Netzwerkentwicklung wird jedoch häufig vorkommen, dass der Bewerbungsprozess aufgrund des Ausfalls des Sitzungsobjekts und des Verlusts der Benutzerstatusinformationen normalerweise nicht abgeschlossen werden kann.
Obwohl die Strategie der Veröffentlichung von Ressourcen mit dem Timeout -Attribut zum Schutz des Servers dient, ist der unvorhersehbare Fehler des Sitzungsobjekts bei der Entwicklung von Anwendungen zu einem Nachteil geworden. Daher muss bei der Entwicklung der tatsächlichen Anwendung das Problem des Sitzungsobjektfehlers gelöst werden.
Traditionelle Lösungen
Die vorhandenen Lösungen verwenden serverseitige Methoden, um das Problem des Sitzungsobjektfehlers zu lösen. Typische Behandlungsmethoden sind in zwei Kategorien unterteilt: Behandlung vor Versagen und Behandlung nach dem Versagen.
Die Verarbeitung vor dem Ausfall bezieht sich auf die Übertragung und andere Verarbeitung von Variablen, bevor das Sitzungsobjekt abgelaufen ist, um Probleme zu verhindern, bevor dies auftritt. Eine typische Lösung besteht darin, einen Timer in der Anwendung einzustellen, den Timer 5 Minuten vor Ausfall des Sitzungsobjekts auszulösen und dann die verschiedenen Variablen und Objekte des Sitzungsobjekts zurückzusetzen. Diese Methode fügt dem Server zusätzliche Last hinzu, da der Timer in Echtzeit auf der Serverseite verwaltet werden muss und das Programm während der gesamten Sitzung aktiviert werden muss.
Die Verarbeitung nach dem Fehler bezieht sich darauf, den Benutzer sofort nach Ablauf des Sitzungsobjekts zu verarbeiten. Eine typische Lösung besteht darin, Breakpoints auf der Serverseite zu speichern, nachdem das Sitzungsobjekt fehlgeschlagen ist, und den Benutzer auffordern, sich erneut anzumelden und die Arbeiten weiter zu vervollständigen. Diese Methode ist einfach zu implementieren, wird jedoch aufgrund der unvollständigen automatischen Wiederherstellung von Haltepunkten und der Komplexität des Re-Login-Prozesses häufig beschwert und von den Endbenutzern kritisiert.
Als Reaktion auf die Mängel der beiden beiden Arten von Lösungen kombiniert der Autor in der Programmierpraxis die Eigenschaften des Cookie-Objekts und verwendet die Methode des gemeinsamen Zugriffs auf Variablen auf Sitzungsebene auf dem Client, wodurch nicht nur die zusätzliche Nachfrage nach Server vermieden wird Ressourcen, löst aber auch das Problem des Problems der nicht automatischen Wiederherstellung von Haltepunkten und beseitigt auch die Mühe, sich erneut anzumelden.
Neue Lösung
Ein Cookie -Objekt ist ein kleines Informationenpaket, in dem Daten über den aktuellen Benutzer gespeichert werden, das zwischen dem Browser und dem Webserver übergeben werden kann. In Webanwendungen bieten Cookies einen Mechanismus für die Verfolgung und Aufzeichnung jedes Benutzerorts. Eine der häufigsten Verwendungen von Cookies besteht darin, die Uhrzeit und das Datum der letzten Webseite zu speichern, die in einer Webanwendung oder in der zu besuchenden URL besucht werden soll.
Normalerweise werden Cookie -Objekte im Cookies -Unterabschnitt im Client -Windows -Systemverzeichnis als Dateien gespeichert. Die im Cookie-Objekt gespeicherten Informationsdaten können für lange Zeit gespeichert werden, sodass Variablen auf Sitzungsebene im Cookie-Objekt gesichert werden können. Cookie -Objekt.
Ein Cookie -Objekt hat die folgenden Eigenschaften:
● Läuft ab: Legen Sie das Datum fest, wenn das Cookie -Objekt abläuft.
● Domäne: Bestimmt die Übertragung des Cookie -Objekts als Mitglied, das nur durch das Domänenattribut bestimmt wird.
● Pfad: Bestimmen Sie den Lieferweg des Cookie -Objekts;
● Sicher: Um zu verdeutlichen, ob das Cookie -Objekt sicher ist;
● Haskeys: Gibt zurück, ob das Cookie -Objekt mehrere Werte enthält.
Wenn die Eigenschaft des Cookie -Objekts abgelaufen ist, ist das Cookie -Objekt am Ende der Benutzersitzung ab.
Lesen und schreiben Sie Objekte über die Sammlung und Antwort des Anfrage in ASP. Die Syntax zum Schreiben von Variablen in ein Cookie -Objekt lautet wie folgt:
Response.cookies (Cookie) [(Schlüssel) | .attribute] = Wert
Wenn der Cookie der Cookie -Dateiname ist, zeigt der Schlüssel ein Wörterbuchelement an, das Attribut ist eine bestimmte Art des Cookies und der Wert ist der Wert, der dem Cookie zugewiesen wird. Um beispielsweise ein Cookie namens MyHobby zu erstellen und seinen Wert zuweisen: Basketball, verwenden Sie die folgende Syntax:
< %Antwort.Cookies (MyHobby) = Basketball %>
Die Methode zum Lesen eines Cookie -Objekts auf dem Client -Computer ist wie folgt:
Request.cookies (Cookie) [(Schlüssel) | .attribute]
Unter ihnen ist das Cookie der Name des angeforderten Cookies, der Schlüssel ist der Einweis des Unterschlüsselwerts, und das Attribut wird verwendet, um das Cookie -Attribut anzugeben. Zum Beispiel: Um Informationen aus einem Cookie namens MyHobby zu extrahieren und ihren Wert auf die Seite zu schreiben, verwenden Sie die folgende Syntax:
< % Request.cookies (myhobby) %>
Es ist zu beachten, dass der Header der HTTP -Seite nicht in ein Cookie -Objekt geschrieben werden kann, nachdem die HTTP -Seite an den anfordernden Browser gesendet wurde. Mit anderen Worten, Cookie -Informationen können nicht an den Browser gesendet werden, nachdem eine HTML -Kennung an den Browser gesendet wurde.
Spezifische Implementierung
Das Folgende ist eine auf ASP -Technologie basierende Chatroom -Implementierung, um die Umgang mit dem Problem mit dem Versagen des Sitzungsobjektvariablens vorzustellen.
● Variable der ersten Sitzung auf Sitzung, bevor sich der Benutzer in: Benutzername anmeldet (verwendet, um den Anmeldebutzungsnamen zu speichern).
<%Sitzung (Benutzername) =%>
// Initialisieren Sie das Cookie -Objekt
< % Response.cookies (Benutzername) = %>
● Wenn sich der Benutzer anmeldet, setzen Sie Variablen auf Sitzungsebene und biegen Sie auf das Client-Cookie-Objekt zurück.
<%userername = trim (request.for (userername))%>
< % Sitzung (Benutzername) = Benutzername %>
// Back-up-Session-Level-Variablen zum Client-Cookie-Objekt sichern
< % Response.cookies (Benutzername) = Benutzername %>
● Wenn der Benutzer spricht, wird die Variable auf Sitzungsebene gelesen.
< % Benutzername = Sitzung (Benutzername) %>
// Wenn die Variable abgelaufen ist, durchsuchen Sie das Client Cookie -Objekt
< % wenn userername = dann %>
< % userername = request.cookies (userername) %>
< % wenn userername = dann %>
// Wenn der Benutzer den Chatraum ohne Anmeldung eingibt, ist der Attributwert des Cookie -Objekts leer. Zu diesem Zeitpunkt wird der Benutzer aufgefordert, einen Fehler zu haben und sich der Benutzeranmeldeseite zu wenden
< %Response.Redirect Fehler.html %>
< % sonst %>
// diese Session-Level-Variable aus dem Cookie-Objekt wiederherstellen
< % Sitzung (Benutzername) = Benutzername %>
< % Ende wenn %>
< % Ende wenn %>
● Wenn der Benutzer den Chatraum verlässt, löschen Sie das Session-Level-Objekt und das Cookie-Objekt.
<%Sitzung (Benutzername) =%>
// Löschen Sie den Attributwert des Cookie -Objekts, um zu verhindern, dass Benutzer in den Chatraum eintreten, ohne sich anzumelden
< % Response.cookies (Benutzername) = %>
Der obige Code wird ausgeführt und in Windows NT 4.0 + IIS 4.0 + IE 5.0 -Umgebung übergeben.
Zusammenfassung
Die Methode zum Zugriff auf Sitzungsvariablen im Client ist einfach und praktisch und kann effektiv Probleme wie die erzwungene Anmeldung durch Benutzer vermeiden.