Sitzung, auch als Sitzungsstatus bekannt, ist der am häufigsten verwendete Status in Websystemen und wird verwendet, um einige Informationen im Zusammenhang mit der aktuellen Browserinstanz zu verwalten. Wir verwenden Session häufig zum Speichern des Benutzerstatus, wenn wir Benutzerberechtigungen steuern. In diesem Artikel geht es um die Speichermethode von Session, die Konfiguration von Session in web.config, den Lebenszyklus von Session usw.
1. Sitzungsspeichermethode.
Die Sitzung ist tatsächlich in eine clientseitige Sitzung und eine serverseitige Sitzung unterteilt.
Wenn ein Benutzer zum ersten Mal eine Verbindung mit dem Webserver herstellt, verteilt der Server eine SessionID als Identifikation an den Benutzer. SessionID ist eine zufällige Zeichenfolge aus 24 Zeichen. Jedes Mal, wenn der Benutzer eine Seite übermittelt, fügt der Browser die SessionID in den HTTP-Header ein und übermittelt sie an den Webserver, sodass der Webserver unterscheiden kann, welcher Client die Seite gerade anfordert. Diese SessionID wird auf dem Client gespeichert und gehört zur Client-Sitzung.
Tatsächlich wird die Client-Sitzung standardmäßig in Form eines Cookies gespeichert. Wenn der Benutzer also Cookies deaktiviert, erhält der Server die Sitzungs-ID nicht. Zu diesem Zeitpunkt können wir die URL-Methode zum Speichern der Client-Sitzung verwenden. Das heißt, die SessionID wird direkt in die URL geschrieben. Diese Methode wird natürlich nicht häufig verwendet.
Die meisten der von uns erwähnten Sitzungen beziehen sich auf serverseitige Sitzungen. Es gibt drei Speichermethoden (benutzerdefinierter Speicher wird hier nicht besprochen):
1.1 Im IIS-Prozess gespeichert:
Das Speichern im IIS-Prozess bezieht sich auf das Speichern der Sitzung Die Daten werden im laufenden Prozess von IIS gespeichert, d. h. im Prozess inetinfo.exe. Dies ist auch die standardmäßige Sitzungsspeichermethode und wird am häufigsten verwendet.
Die Vorteile dieser Methode sind Einfachheit und höchste Leistung. Beim Neustart des IIS-Servers geht die Sitzung jedoch verloren.
1.2. Auf StateServer speichern
Dieser Speichermodus bezieht sich auf das Speichern von Sitzungsdaten in einem Prozess namens Asp.Net State Service Unabhängig vom Asp.Net-Workerprozess oder einem separaten Prozess des IIS-Anwendungspools stellt die Verwendung dieses Modus sicher, dass der Sitzungsstatus beim Neustart der Webanwendung erhalten bleibt und den Sitzungsstatus mehreren Webservern im Netzwerk zur Verfügung stellt.
1.3. Speichern in der SQL Server-Datenbank
Sie können die Sitzungsdaten konfigurieren, die in der SQL Server-Datenbank gespeichert werden sollen Bei einer solchen Konfiguration müssen Programmierer zunächst den SQL Server-Datenserver vorbereiten und dann das in .NET integrierte Installationstool ausführen, um die Statusdatenbank zu installieren.
Diese Methode bleibt auch dann bestehen, wenn der Server hängt und neu startet, da sie im Speicher und auf der Festplatte gespeichert ist.
Das Folgende ist ein Vergleich dieser drei Methoden:
|
StateServer | SQLServer | |||||||||||||||||||||||||||||||||||||
Physischer Speicherort | IIS-Prozess (Speicher) | Windows-Dienstprozess (Speicher) | SQLServer-Datenbank (Festplatte) | Einschränkungen des Speichertyps | Keine Einschränkungen | Serialisierbare Typen | Serialisierbare Typen Typ | ||||||||||||||||||||||||||||||||
Speichergrößenbeschränkung | Unbegrenzt | ||||||||||||||||||||||||||||||||||||||
NutzungsumfangAktueller Anforderungskontext, unabhängig für jeden Benutzer | |||||||||||||||||||||||||||||||||||||||
Lebenszyklus | Wenn Sie Wenn Sie die Website zum ersten Mal besuchen, wird die erstellte Sitzung nach einer Zeitüberschreitung zerstört |
||||||||||||||||||||||||||||||||||||||
Vorteile | Hohe Leistung | Die Sitzung ist nicht auf den Webserver angewiesen und kann nicht leicht verloren gehen | |||||||||||||||||||||||||||||||||||||
Nachteile | Leicht verloren | Serialisierung und Deserialisierung verbrauchen CPU-Ressourcen | Serialisierung und Deserialisierung verbrauchen CPU-Ressourcen und das Lesen der Sitzung von der Festplatte ist langsam | ||||||||||||||||||||||||||||||||||||
Verwendungsgrundsätze | Nicht lagern große Mengen Daten |
2. Sitzung in web.config konfigurieren
Sitzungskonfigurationsinformationen in der Datei Web.config:
<sessionState mode= cookieless= timeout= stateConnectionString= sqlConnectionString= stateNetworkTimeout= />
Modus legt fest, wo Sitzungsinformationen gespeichert werden sollen:
– Aus ist eingestellt, um die Sitzungsfunktion nicht zu verwenden.
– InProc ist so eingestellt, dass die Sitzung gespeichert wird „process Within“ ist die Speichermethode in ASP, die der Standardwert ist. – StateServer ist so eingestellt, dass die Sitzung in einem unabhängigen Statusdienst gespeichert wird.
Cookieless Legen Sie fest, wo die Sitzungsinformationen des Clients gespeichert werden:
– Verwenden Sie den Cookieless-Modus; dann werden die Sitzungsinformationen des Clients nicht mehr mithilfe von Cookies gespeichert, sondern über URL. Die URL lautet beispielsweise http://www.php.cn/(ulqsek45heu3ic2a5zgdl245)/default.aspx
– false. Verwenden Sie den Cookie-Modus, der der Standardwert ist.
Timeout legt die Anzahl der Minuten fest, nach denen der Server die Sitzungsinformationen automatisch aufgibt. Der Standardwert beträgt 20 Minuten.
StateConnectionString legt den Servernamen und die Portnummer fest, die beim Speichern von Sitzungsinformationen im Statusdienst verwendet werden, zum Beispiel: „tcpip=127.0.0.1:42424“. Dieses Attribut ist erforderlich, wenn der Wert von mode StateServer ist. (42424 ist der Standardport).
sqlConnectionString Legt die Verbindungszeichenfolge beim Herstellen einer Verbindung mit SQL Server fest. Zum Beispiel „Datenquelle=localhost;Integrated Security=SSPI;Initial Catalog=northwind“. Dieses Attribut ist erforderlich, wenn der Wert von mode SQLServer ist.
StateNetworkTimeout legt die Anzahl der Leerlaufsekunden fest, nach denen die TCP/IP-Verbindung zwischen dem Webserver und dem Server, der die Statusinformationen speichert, getrennt wird, nachdem der StateServer-Modus zum Speichern des Sitzungsstatus verwendet wurde . Der Standardwert beträgt 10 Sekunden.
Lassen Sie uns darüber sprechen, wie StateServer und SqlServer zum Speichern von Sitzungen verwendet werden
2.1 StateServer
Der erste Schritt besteht darin, den Statusdienst zu öffnen. Öffnen Sie den Befehl „Systemsteuerung“ → „Verwaltung“ → „Dienste“, suchen Sie den ASP.NET-Statusdienst, klicken Sie mit der rechten Maustaste auf den Dienst und wählen Sie „Starten“.
Wenn Sie sich offiziell dafür entscheiden, den Statusdienst zum Speichern der Sitzung zu verwenden, vergessen Sie nicht, den Dienst so zu ändern, dass er selbst startet (der Dienst kann von selbst gestartet werden, nachdem das Betriebssystem gestartet wurde). neu gestartet), um zu vermeiden, dass der Dienst vergessen wird und die Website-Sitzung nicht mehr funktionsfähig ist. Verwenden Sie
Schritt 2: stateNetworkTimeout="20"> Adresse des Statusservers (IP: Service-Portnummer) im system.web-Knoten. Da wir gerade auf dieser Maschine testen, stellen Sie hier die lokale Maschinenadresse 127.0.0.1 ein. Der Standard-Abhörport des Statusdienstes ist 42422. Natürlich können Sie die Portnummer des Statusdienstes auch ändern, indem Sie die Registrierung ändern.
(Methode zum Ändern der Registrierung, um die Portnummer des Statusdienstes zu ändern: Geben Sie während des Vorgangs regedit ein, um den Registrierungseditor zu starten. Öffnen Sie nacheinander den Knoten HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesaspnet_stateParameters, doppelklicken Sie auf die Option Port. Wählen Sie die Basis aus dezimal, und geben Sie dann eine Portnummer ein. Das ist es. Diese Skriptdatei erstellt in SQL Server eine Datenbank speziell zum Speichern von Sitzungsinformationen und einen SQL Server-Agent-Job, der die Sitzungsinformationsdatenbank verwaltet. Wir finden die Datei im folgenden Pfad: [Systemlaufwerk]winntMicrosoft.NETFramework[version]
Dann öffnen Sie Query Analyzer, stellen eine Verbindung zum SQL Server-Server her, öffnen die Datei gerade und implementieren. Warten Sie einen Moment und die Datenbank und der Job werden erstellt. Zu diesem Zeitpunkt können Sie den Enterprise Manager öffnen und sehen, dass eine neue Datenbank namens ASPState hinzugefügt wurde.
Ändern Sie den Moduswert in SQLServer. Beachten Sie, dass Sie gleichzeitig auch den Wert von sqlConnectionString ändern müssen. Das Format lautet: sqlConnectionString="data source=localhost; Integrated Security=SSPI;" (Dies erfolgt über die integrierte Windows-Authentifizierung)
3. Sitzungslebenszyklus
Der Lebenszyklus der Sitzung wurde tatsächlich im ersten Abschnitt besprochen und bezieht sich auf verschiedene gespeicherte Prozeduren.
4. Sitzung durchqueren und zerstören
4.1 Durchquerung:
4.2 Zerstörung: Session.Abandon().
Weitere Tutorials zu Sitzungsspeichermethoden und Konfigurationsdateien finden Sie auf der chinesischen PHP-Website!