Freigeben über


HttpSessionState Klasse

Definition

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

public ref class HttpSessionState sealed : System::Collections::ICollection
public sealed class HttpSessionState : System.Collections.ICollection
type HttpSessionState = class
    interface ICollection
    interface IEnumerable
Public NotInheritable Class HttpSessionState
Implements ICollection
Vererbung
HttpSessionState
Implementiert

Beispiele

Im folgenden Codebeispiel werden Werte aus dem Sitzungszustand festgelegt und abgerufen.

Wichtig

Dieses Beispiel umfasst ein Textfeld, das Benutzereingaben akzeptiert, die ein potenzielles Sicherheitsrisiko darstellen. Standardmäßig stellen ASP.NET-Webseiten sicher, dass Benutzereingaben keine Skript- oder HTML-Elemente enthalten. Weitere Informationen finden Sie unter Übersicht über Skriptangriffe.

<%@ 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" />
  <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>

<%@ Page Language="VB" %>

<%@ 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 Sub Page_Load(ByVal sender As Object, ByVal args As EventArgs)
    If Not IsPostBack Then
      If Session("Address") Is Nothing Then
        EnterUserInfoPanel.Visible = True
        UserInfoPanel.Visible = False
      Else
        EnterUserInfoPanel.Visible = False
        UserInfoPanel.Visible = True
        
        SetLabels()
      End If
    End If
  End Sub
  
  Protected Sub 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()
  End Sub
  
  Protected Sub EnterInfoButton_OnClick(ByVal sender As Object, ByVal args As EventArgs)
    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()
  End Sub
  
  Protected Sub ChangeInfoButton_OnClick(ByVal sender As Object, ByVal args As EventArgs)
    EnterUserInfoPanel.Visible = True
    UserInfoPanel.Visible = False
  End Sub
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
  <meta http-equiv="Content-Type" content="text/html" />
  <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>

Hinweise

ASP.NET bietet Sitzungsstatusverwaltung, damit Sie Informationen, die einer eindeutigen Browsersitzung zugeordnet sind, über mehrere Anforderungen hinweg speichern können. Sie können eine Auflistung von Werten speichern, auf die durch einen Schlüsselnamen oder einen numerischen Index verwiesen wird. Der Zugriff auf Sitzungswerte und -funktionen ist über die HttpSessionState -Klasse verfügbar, auf die über die Session -Eigenschaft des aktuellen HttpContextoder der Session -Eigenschaft von Pagezugegriffen werden kann.

Sitzungsdaten werden einer bestimmten Browsersitzung mithilfe eines eindeutigen Bezeichners zugeordnet. Standardmäßig wird dieser Bezeichner in einem nicht ablaufenden Sitzungscooky im Browser gespeichert. Sie können Ihre Anwendung jedoch auch so konfigurieren, dass der Sitzungsbezeichner in der URL gespeichert wird, indem Sie das cookieless Attribut auf true oder UseUri im sessionState-Element Ihrer Anwendungskonfiguration festlegen. Sie können ASP.NET bestimmen lassen, ob Cookies vom Browser unterstützt werden, indem Sie den Wert für UseDeviceProfile das cookieless Attribut angeben. Sie können auch ASP.NET bestimmen, ob Cookies für den Browser aktiviert sind, indem Sie den Wert für AutoDetect das cookieless Attribut angeben. Wenn Cookies unterstützt werden, wenn UseDeviceProfile angegeben oder aktiviert werden, wenn AutoDetect angegeben wird, wird der Sitzungsbezeichner in einem Cookie gespeichert, andernfalls wird der Sitzungsbezeichner in der URL gespeichert.

Sitzungen werden während der ersten Anforderung gestartet, und Sitzungswerte bleiben bestehen, solange eine neue Anforderung vom Browser vor der im Timeout Eigenschaftendurchlauf angegebenen Anzahl von Minuten gestellt wird. Wenn eine neue Sitzung beginnt, wird das Sitzungsereignis Start ausgelöst. Sie können dieses Ereignis verwenden, um zusätzliche Aufgaben zu Beginn einer Sitzung auszuführen, z. B. das Festlegen von Standardsitzungswerten. Wenn ein Sitzungstimeout ausfällt, die Abandon Methode aufgerufen wird oder die ASP.NET Anwendung heruntergefahren wird, wird das Sitzungsereignis End ausgelöst. Sie können dieses Ereignis verwenden, um alle erforderlichen Bereinigungen durchzuführen. Das End Ereignis wird nur ausgelöst, wenn der Sitzungsstatus mode auf InProcfestgelegt ist.

Um die Leistung zu verbessern, weisen Sitzungen, die Cookies verwenden, den Sitzungsspeicher erst zu, wenn Daten tatsächlich im Session Objekt gespeichert werden. Weitere Informationen finden Sie in den Ausführungen zur SessionID-Eigenschaft.

Der Sitzungsstatus bleibt nicht über ASP.NET Anwendungsgrenzen hinweg erhalten. Wenn ein Browser zu einer anderen Anwendung navigiert, stehen die Sitzungsinformationen für die neue Anwendung nicht zur Verfügung.

Sitzungswerte werden standardmäßig im Arbeitsspeicher auf dem Webserver gespeichert. Sie können Sitzungswerte auch in einer SQL Server-Datenbank, einem ASP.NET Zustandsserver oder einem benutzerdefinierten Server speichern. Dadurch können Sie Sitzungswerte in Fällen beibehalten, in denen der ASP.NET- oder IIS-Prozess oder die ASP.NET Anwendung neu gestartet wird, und Sitzungswerte auf allen Servern in einer Webfarm verfügbar zu machen. Dieses Verhalten wird konfiguriert, indem das mode Attribut auf einen gültigen SessionStateMode Wert im sessionState-Element Ihrer Anwendungskonfiguration festgelegt wird. Weitere Informationen finden Sie unter Sitzungszustandsmodi.

Alternativen zum Sitzungsstatus sind der Anwendungszustand (siehe die Application -Eigenschaft) und der ASP.NET Cache (siehe Namespace System.Web.Caching ), die Variablen speichern, auf die alle Benutzer einer ASP.NET-Anwendung zugreifen können; das ASP.NET-Profil (siehe Namespace System.Web.Profile ), das Benutzerwerte in einem Datenspeicher speichert, ohne sie mithilfe eines Timeouts auslaufen zu lassen; ASP.NET System.Web.UI.WebControls, die Steuerungswerte in der ViewStatebeibehalten; Cookiesdie QueryString -Eigenschaft und Felder in einem HTML-Formular, die in einem HTTP-Formular POST verfügbar sind. mithilfe der Form Auflistung. Weitere Informationen zu den Unterschieden zwischen dem Sitzungszustand und anderen Alternativen zur Zustandsverwaltung finden Sie unter Empfehlungen zur ASP.NET Zustandsverwaltung.

Eigenschaften

CodePage

Ruft den Zeichensatzbezeichner für die aktuelle Sitzung ab oder legt diesen fest.

Contents

Ruft einen Verweis auf das aktuelle Sitzungsstatusobjekt ab.

CookieMode

Ruft einen Wert ab, der angibt, ob die Anwendung für Sitzungen ohne Cookies konfiguriert ist.

Count

Ruft die Anzahl der Elemente in der Sitzungsstatusauflistung ab.

IsCookieless

Ruft einen Wert ab, der angibt, ob die Sitzungs-ID in der URL eingebettet oder in einem HTTP-Cookie gespeichert ist.

IsNewSession

Ruft einen Wert ab, der angibt, ob die Sitzung mit der aktuellen Anforderung erstellt wurde.

IsReadOnly

Ruft einen Wert ab, der angibt, ob die Sitzung schreibgeschützt ist.

IsSynchronized

Ruft einen Wert ab, der angibt, ob der Zugriff auf die Auflistung der Sitzungszustandswerte synchronisiert (threadsicher) ist.

Item[Int32]

Ruft einen Sitzungswert über den numerischen Index ab oder legt diesen fest.

Item[String]

Ruft einen Sitzungswert über den Namen ab oder legt diesen fest.

Keys

Ruft eine Auflistung der Schlüssel für alle Werte ab, die in der Sitzungszustandsauflistung gespeichert sind.

LCID

Ruft den Gebietsschemabezeichner (Locale Identifier, LCID) der aktuellen Sitzung ab oder legt ihn fest.

Mode

Ruft den aktuellen Sitzungszustandsmodus ab.

SessionID

Ruft den eindeutigen Bezeichner für die Sitzung ab.

StaticObjects

Ruft eine Auflistung von Objekten ab, die durch <object Runat="Server" Scope="Session"/>-Tags innerhalb der ASP.NET-Anwendungsdatei Global.asax deklariert werden.

SyncRoot

Ruft ein Objekt ab, mit dem der Zugriff auf die Auflistung von Sitzungszustandswerten synchronisiert werden kann.

Timeout

Ruft die Zeitspanne in Minuten ab, die zwischen Anforderungen zulässig ist, bevor der Sitzungszustandsanbieter die Sitzung beendet, oder legt diese fest.

Methoden

Abandon()

Bricht die aktuelle Sitzung ab.

Add(String, Object)

Fügt der Sitzungszustandsauflistung ein neues Element hinzu.

Clear()

Entfernt alle Schlüssel und Werte aus der Sitzungszustandsauflistung.

CopyTo(Array, Int32)

Kopiert die Auflistung der Sitzungsstatuswerte in ein eindimensionales Array, wobei am angegebenen Index im Array begonnen wird.

Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

(Geerbt von Object)
GetEnumerator()

Gibt einen Enumerator zurück, mit dem alle Namen der Sitzungszustandsvariablen in der aktuellen Sitzung gelesen werden können.

GetHashCode()

Fungiert als Standardhashfunktion.

(Geerbt von Object)
GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
Remove(String)

Löscht ein Element aus der Sitzungszustandsauflistung.

RemoveAll()

Entfernt alle Schlüssel und Werte aus der Sitzungszustandsauflistung.

RemoveAt(Int32)

Löscht ein Element an einem angegebenen Index aus der Sitzungszustandsauflistung.

ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)

Erweiterungsmethoden

Cast<TResult>(IEnumerable)

Wandelt die Elemente eines IEnumerable in den angegebenen Typ um

OfType<TResult>(IEnumerable)

Filtert die Elemente eines IEnumerable anhand eines angegebenen Typs

AsParallel(IEnumerable)

Ermöglicht die Parallelisierung einer Abfrage.

AsQueryable(IEnumerable)

Konvertiert einen IEnumerable in einen IQueryable.

Gilt für:

Weitere Informationen