So arbeiten Sie mit Sitzungen in ASP.Net

HTTP ist ein zustandsloses Protokoll. Dies bedeutet, dass jedes Mal, wenn eine neue Anforderung vom Client an den Server gesendet wird, die Statusinformationen der vorherigen Anforderung verloren gehen. Es gibt verschiedene Möglichkeiten, den Status in ASP.Net zu speichern und zu verwalten. Das Sitzungsobjekt ist eines davon, die anderen sind Caching- und Anwendungsobjekte.

Durch das Zwischenspeichern wird die Leistung der Anwendung verbessert, indem der Ressourcenverbrauch in Ihrem System minimiert wird. Sie können häufig verwendete Daten oder Webseiten speichern, um die Leistung, den Durchsatz und die Skalierbarkeit der Anwendung zu verbessern, indem Sie den Verbrauch der Serverressourcen reduzieren.

Sie können eine Sitzung als eine Sitzung der Konnektivität zwischen dem Server und dem Client definieren. Das Sitzungsobjekt enthält Daten, die der Sitzung eines Benutzers entsprechen. Die Sitzung ist eine serverseitige Statusverwaltungstechnik, mit der benutzerspezifische Informationen zum späteren Abrufen im Speicher gespeichert werden.

Modi zum Speichern von Sitzungsdaten

Das Sitzungsobjekt wird auf der Serverseite erstellt und verwaltet. Der Sitzungsspeichermodus bestimmt, wo Ihre Sitzungsdaten gespeichert werden sollen. Der Sitzungsstatus kann in einem der folgenden Modi gespeichert werden:

  1. In-Process: Wird im selben ASP.Net-Prozess gespeichert
  2. Statusserver: Wird in einem anderen System gespeichert
  3. SQL Server: In der SQLServer-Datenbank gespeichert
  4. Benutzerdefiniert: Hiermit können Sie Sitzungsdaten über einen benutzerdefinierten Speicheranbieter speichern

Der In-Proc-Speichermodus für Sitzungsdaten ist der Standardmodus und der schnellste aller verfügbaren Speichermodi. In diesem Modus werden die Sitzungsdaten im Speicher des Servers gespeichert - im ASP.Net-Worker-Prozess. Sie sollten diesen Modus verwenden, wenn die Datenmenge, die in der Sitzung gespeichert werden muss, geringer ist und wenn Sie nicht möchten, dass die Daten beibehalten werden. Es ist zu beachten, dass in diesem Modus gespeicherte Sitzungsdaten flüchtig sind, dh sobald die Sitzung beendet wird, gehen die Sitzungsdaten verloren. Daten in der Sitzung sind also verfügbar, solange die Sitzung aktiv ist.

Im State Server-Modus werden die Sitzungsdaten in einem separaten Prozess gespeichert - dies wird als ASP.Net State Service bezeichnet. Mit anderen Worten, Sitzungsdaten in diesem Modus werden außerhalb des ASP.Net-Arbeitsprozesses oder des Anwendungspools in IIS gespeichert. Im Gegensatz zum In-Proc-Modus bleiben die Sitzungsdaten im State Server-Modus erhalten, dh sie gehen nach dem Neustart Ihrer Webanwendung nicht verloren.

Das folgende Codeausschnitt zeigt, wie Sie den Sitzungsstatus in Ihrer Anwendung so konfigurieren können, dass er in diesem Modus gespeichert wird.

 

   

      stateConnectionString="tcpip=Server:1234"

      cookieless="false"

      timeout="20"/>

 

The SQLServer mode of session data storage is used to persist session data of your application in the SQLServer database. Similar to the State Server mode of session data storage, the SQLServer mode also enables you to persist session data of your application across application restarts. Note that you should ensure that the ASP.Net session state database is created before using this mode. You can create this database using the Aspnet_regsql.exe command line utility.

The following code snippet shows how you can configure your application to store session data in a SQLServer database.

 

   

       sqlConnectionString="data source=server;user id=joydip;[email protected]"

       cookieless="false" timeout="20" />

 

Support for Session data compression

Microsoft's ASP.Net 4 introduced a new feature: session state compression. With ASP.Net 4 and onward, you can leverage this built-in feature to compress session data for storing out-of-process sessions. To take advantage of this feature, all you need to do is set the compressionEnabled attribute to "true" in the configuration file of your application. The following code snippet illustrates how this can be configured.

  mode="SQLServer"

  stateConnectionString="some connection string..."

  compressionEnabled="true"/>

Session state enables you to store user specific data in the memory and identify a particular request uniquely.  Session data is stored as key/value pairs in the SessionStateItemCollection and can be accessed using the HttpContext.Session property.

The following code examples show how you can store and retrieve session data.

HttpSessionState.Session["UserName"] = "John"; //stores session data

string str = HttpSessionState.Session["UserName"].ToString();

// Retrieves session data

HttpSessionState.Remove("Key to remove");

//Removes an object from the session state