Freigeben über


HttpSessionState-Klasse

Ermöglicht den Zugriff auf Werte des Sitzungszustands und Einstellungen der Sitzungsebene sowie auf Methoden für die Lebensdauerverwaltung.

Namespace: System.Web.SessionState
Assembly: System.Web (in system.web.dll)

Syntax

'Declaration
Public NotInheritable Class HttpSessionState
    Implements ICollection, IEnumerable
'Usage
Dim instance As HttpSessionState
public sealed class HttpSessionState : ICollection, IEnumerable
public ref class HttpSessionState sealed : ICollection, IEnumerable
public final class HttpSessionState implements ICollection, IEnumerable
public final class HttpSessionState implements ICollection, IEnumerable

Hinweise

ASP.NET stellt Funktionen für die Verwaltung des Sitzungszustands bereit, damit Sie über mehrere Anforderungen hinweg Informationen zu einer eindeutigen Browsersitzung speichern können. Sie können eine Auflistung von Werten speichern, auf die über einen Schlüsselnamen oder einen numerischen Index verwiesen wird. Der Zugriff auf die Sitzungswerte und -funktionen ist über die HttpSessionState-Klasse möglich, die über die Session-Eigenschaft des aktuellen HttpContext oder der Session-Eigenschaft der Page abgerufen wird.

Die Sitzungsdaten werden mithilfe eines eindeutigen Bezeichners einer bestimmten Browsersitzung zugeordnet. In der Standardeinstellung wird dieser Bezeichner in einem Sitzungscookie ohne Ablaufdatum im Browser gespeichert. Sie können Ihre Anwendung jedoch auch so konfigurieren, dass der Sitzungsbezeichner im URL gespeichert wird. Legen Sie hierzu das cookieless-Attribut im sessionState-Element der Anwendungskonfiguration auf true oder UseUri fest. Sie können festlegen, dass ASP.NET bestimmt, ob der Browser Cookies unterstützt, indem Sie den Wert UseDeviceProfile für das cookieless-Attribut angeben. Sie können außerdem festlegen, dass ASP.NET bestimmen soll, ob Cookies im Browser aktiviert sind, indem Sie den Wert AutoDetect für das cookieless-Attribut angeben. Wenn bei der Angabe von UseDeviceProfile Cookies unterstützt oder bei der Angabe von AutoDetect Cookies aktiviert sind, wird der Sitzungsbezeichner in einem Cookie gespeichert. Andernfalls wird der Sitzungsbezeichner im URL gespeichert.

Eine Sitzung wird mit einer ersten Anfrage gestartet. Die Sitzungswerte werden beibehalten, solange der Browser vor Verstreichen der in der Timeout-Eigenschaft angegebenen Anzahl von Minuten neue Anforderungen sendet. Am Anfang einer neuen Sitzung wird das Start-Ereignis der Sitzung ausgelöst. Sie können dieses Ereignis verwenden, um beim Start einer Sitzung zusätzliche Aufgaben zu erledigen, z. B. um Standardwerte für die Sitzung festzulegen. Wenn das Timeout einer Sitzung überschritten, die Abandon-Methode aufgerufen oder die ASP.NET-Anwendung beendet wird, wird das End-Ereignis für die Sitzung ausgelöst. Sie können dieses Ereignis verwenden, um eine ggf. erforderliche Bereinigung auszuführen. Das End-Ereignis wird nur ausgelöst, wenn der mode des Sitzungszustands auf InProc festgelegt ist.

Zur Leistungssteigerung reservieren Sitzungen, die Cookies verwenden, keinen Sitzungspeicher, bis Daten tatsächlich im Session-Objekt gespeichert werden. Weitere Informationen finden Sie unter der SessionID-Eigenschaft.

Der Sitzungszustand bleibt nicht über ASP.NET-Anwendungsgrenzen erhalten. Wenn in einem Browser zu einer anderen Anwendung gewechselt wird, stehen die Sitzungsinformationen der neuen Anwendung nicht zur Verfügung.

In der Standardeinstellung werden die Sitzungswerte auf den Webserver im Arbeitsspeicher gespeichert. Die Sitzungswerte können jedoch auch in einer SQL Server-Datenbank, einem ASP.NET-Zustandsserver oder einem benutzerdefinierten Server gespeichert werden. Dadurch werden Sitzungswerte beibehalten, auch wenn der ASP.NET- bzw. der IIS-Prozess oder die ASP.NET-Anwendung neu gestartet wird, und die Sitzungswerte können allen Servern in einer Webfarm verfügbar gemacht werden. Die Konfiguration dieses Verhaltens erfolgt durch das Festlegen des mode-Attributs auf einen gültigen SessionStateMode-Wert im sessionState-Element der Anwendungskonfiguration. Weitere Informationen finden Sie unter Sitzungszustandsmodi.

Zum Sitzungszustand gibt es die folgenden Alternativen: den Anwendungszustand (siehe Application-Eigenschaft) und ASP.NET-Cache (siehe System.Web.Caching-Namespace), in denen Variablen gespeichert werden, auf die alle Benutzer einer ASP.NET-Anwendung zugreifen können; das ASP.NET-Profil (siehe System.Web.Profile-Namespace), in dem Benutzerwerte in einem Datenspeicher beibehalten werden, die nach einem Timeout nicht verfallen; ASP.NET-System.Web.UI.WebControls, bei denen Steuerelementwerte im ViewState beibehalten werden; Cookies; die QueryString-Eigenschaft; Felder in einem HTML-Formular, die mithilfe der Form-Auflistung aus einem HTTP-POST verfügbar sind. Weitere Informationen über die Unterschiede zwischen dem Sitzungszustand und den anderen Möglichkeiten der Zustandsverwaltung finden Sie unter Empfehlungen zur ASP.NET-Zustandsverwaltung.

Thema Position
Gewusst wie: Lesen von Werten aus dem Sitzungszustand Erstellen von ASP.NET-Webanwendungen in Visual Studio
Gewusst wie: Beispiel eines Sitzungszustandsspeicher-Anbieters Erstellen von ASP.NET-Webanwendungen in Visual Studio
Gewusst wie: Speichern von Werten im Sitzungszustand Erstellen von ASP.NET-Webanwendungen in Visual Studio
Gewusst wie: Lesen von Werten aus dem Sitzungszustand Erstellen von ASP.NET-Webanwendungen in Visual Studio
Gewusst wie: Beispiel eines Sitzungszustandsspeicher-Anbieters Erstellen von ASP.NET-Webanwendungen in Visual Studio
Gewusst wie: Speichern von Werten im Sitzungszustand Erstellen von ASP.NET-Webanwendungen in Visual Studio
Gewusst wie: Lesen von Werten aus dem Sitzungszustand Erstellen von ASP.NET-Webanwendungen
Gewusst wie: Beispiel eines Sitzungszustandsspeicher-Anbieters Erstellen von ASP.NET-Webanwendungen
Gewusst wie: Speichern von Werten im Sitzungszustand Erstellen von ASP.NET-Webanwendungen

Beispiel

Im folgenden Codebeispiel werden Werte für den Sitzungszustand festgelegt und abgerufen.

<%@ Page Language="C#" %>
<%@ Import Namespace="System.Collections" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
  public void Page_Load(object sender, EventArgs args)
  {
    if (!IsPostBack)
    {
      if (Session["address"] == null)
      {
        enterUserInfoPanel.Visible = true;
        userInfoPanel.Visible = false;
      }
      else
      {
        enterUserInfoPanel.Visible = false;
        userInfoPanel.Visible = true;

        SetLabels();
      }
    }
  }

  protected void SetLabels()
  {
    firstNameLabel.Text = Session["firstName"].ToString();
    lastNameLabel.Text = Session["lastName"].ToString();
    addressLabel.Text = Session["address"].ToString();
    cityLabel.Text = Session["city"].ToString();
    stateOrProvinceLabel.Text = Session["stateOrProvince"].ToString();
    zipCodeLabel.Text = Session["zipCode"].ToString();
    countryLabel.Text = Session["country"].ToString();
  }

  protected void EnterInfoButton_OnClick(object sender, EventArgs e)
  {
    Session["firstName"] = Server.HtmlEncode(firstNameTextBox.Text);
    Session["lastName"] = Server.HtmlEncode(lastNameTextBox.Text);
    Session["address"] = Server.HtmlEncode(addressTextBox.Text);
    Session["city"] = Server.HtmlEncode(cityTextBox.Text);
    Session["stateOrProvince"] = Server.HtmlEncode(stateOrProvinceTextBox.Text);
    Session["zipCode"] = Server.HtmlEncode(zipCodeTextBox.Text);
    Session["country"] = Server.HtmlEncode(countryTextBox.Text);

    enterUserInfoPanel.Visible = false;
    userInfoPanel.Visible = true;

    SetLabels();
  }

  protected void ChangeInfoButton_OnClick(object sender, EventArgs args)
  {
    enterUserInfoPanel.Visible = true;
    userInfoPanel.Visible = true;
  }
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>User Information</title>
</head>
<body>
  <form id="form1" runat="server">
    <h3>
      User information</h3>
    <asp:Label ID="Msg" ForeColor="maroon" runat="server" /><br />
    <asp:Panel ID="enterUserInfoPanel" runat="server">
      <table cellpadding="3" border="0">
        <tr>
          <td>
            First name:</td>
          <td>
            <asp:TextBox ID="firstNameTextBox" runat="server" /></td>
        </tr>
        <tr>
          <td>
            Last name:</td>
          <td>
            <asp:TextBox ID="lastNameTextBox" runat="server" /></td>
        </tr>
        <tr>
          <td>
            Address:</td>
          <td>
            <asp:TextBox ID="addressTextBox" runat="server" /></td>
        </tr>
        <tr>
          <td>
            City:</td>
          <td>
            <asp:TextBox ID="cityTextBox" runat="server" /></td>
        </tr>
        <tr>
          <td>
            State or Province:</td>
          <td>
            <asp:TextBox ID="stateOrProvinceTextBox" runat="server" /></td>
        </tr>
        <tr>
          <td>
            Zip Code/Postal Code:</td>
          <td>
            <asp:TextBox ID="zipCodeTextBox" runat="server" /></td>
        </tr>
        <tr>
          <td>
            Country:</td>
          <td>
            <asp:TextBox ID="countryTextBox" runat="server" /></td>
        </tr>
        <tr>
          <td>
            &nbsp;</td>
          <td>
            <asp:Button ID="enterInfoButton" runat="server" Text="Enter user information" OnClick="EnterInfoButton_OnClick" /></td>
        </tr>
      </table>

    </asp:Panel>
    <asp:Panel ID="userInfoPanel" runat="server">
      <table cellpadding="3" border="0">
        <tr>
          <td>
            Name:</td>
          <td>
            <asp:Label ID="firstNameLabel" runat="server" />
            <asp:Label ID="lastNameLabel" runat="server" />
          </td>
        </tr>
        <tr>
          <td valign="top">
            address:</td>
          <td>
            <asp:Label ID="addressLabel" runat="server" /><br />
            <asp:Label ID="cityLabel" runat="server" />,
            <asp:Label ID="stateOrProvinceLabel" runat="server" />
            <asp:Label ID="zipCodeLabel" runat="server" /><br />
            <asp:Label ID="countryLabel" runat="server" />
          </td>
        </tr>
        <tr>
          <td>
            &nbsp;</td>
          <td>
            <asp:Button ID="changeInfoButton" runat="server" Text="Change user information" OnClick="ChangeInfoButton_OnClick" /></td>
        </tr>
      </table>

    </asp:Panel>
  </form>
</body>
</html>

.NET Framework-Sicherheit

Vererbungshierarchie

System.Object
  System.Web.SessionState.HttpSessionState

Threadsicherheit

Alle öffentlichen statischen (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Plattformen

Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

Siehe auch

Referenz

HttpSessionState-Member
System.Web.SessionState-Namespace
System.Web.Profile
System.Web.Caching

Weitere Ressourcen

Übersicht über den Sitzungszustand