Freigeben über


HttpSessionState Klasse

Definition

Bietet Zugriff auf Sitzungsstatuswerte sowie Einstellungen auf Sitzungsebene und 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.

Von Bedeutung

In diesem Beispiel handelt es sich um ein Textfeld, das Benutzereingaben akzeptiert, bei denen es sich um eine potenzielle Sicherheitsrisiken handelt. Standardmäßig überprüfen ASP.NET Webseiten, dass die Benutzereingabe keine Skript- oder HTML-Elemente enthält. Weitere Informationen finden Sie unter Script Exploits Overview.

<%@ 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 die Sitzungsstatusverwaltung, mit der Sie Informationen speichern können, die einer eindeutigen Browsersitzung in mehreren Anforderungen zugeordnet sind. Sie können eine Auflistung von Werten speichern, auf die durch einen Schlüsselnamen oder numerischen Index verwiesen wird. Der Zugriff auf Sitzungswerte und -funktionen ist mithilfe der HttpSessionState Klasse verfügbar, auf die über die Session Eigenschaft der aktuellen HttpContextoder die Session Eigenschaft der Page.

Sitzungsdaten werden einer bestimmten Browsersitzung mithilfe eines eindeutigen Bezeichners zugeordnet. Standardmäßig wird dieser Bezeichner in einem nicht ablaufenden Sitzungscookies 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, ob Cookies vom Browser unterstützt werden, indem Sie einen 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 einen Wert für AutoDetect das cookieless Attribut angeben. Wenn Cookies bei UseDeviceProfile Angabe unterstützt oder aktiviert AutoDetect werden, 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 werden beibehalten, solange eine neue Anforderung vom Browser vor der Anzahl der minuten im Timeout Eigenschaftsdurchlauf angegeben wird. Wenn eine neue Sitzung beginnt, wird das Sitzungsereignis Start ausgelöst. Sie können dieses Ereignis verwenden, um zusätzliche Aufgaben am Anfang einer Sitzung auszuführen, z. B. festlegen von Standardsitzungswerten. Wenn ein Sitzungstimeout auftritt, 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 Sitzungszustand mode auf InProc.

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

Der Sitzungszustand wird nicht über ASP.NET Anwendungsgrenzen hinweg beibehalten. Wenn ein Browser zu einer anderen Anwendung navigiert, sind die Sitzungsinformationen für die neue Anwendung nicht verfügbar.

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. Auf diese Weise 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 Session-State Modi.

Alternativen zum Sitzungszustand sind Anwendungsstatus (siehe Application Eigenschaft) und der ASP.NET-Cache (siehe System.Web.Caching Namespace), der Variablen speichert, auf die von allen Benutzern einer ASP.NET Anwendung zugegriffen werden kann; das ASP.NET-Profil (siehe Namespace System.Web.Profile ), das Benutzerwerte in einem Datenspeicher speichert, ohne sie mit einem Timeout zu ablaufen; ASP.NET System.Web.UI.WebControls, die Steuerelementwerte in der ViewState; Cookies; die Eigenschaft und Felder QueryString in einem HTML-Formular, die in einem HTTP-Formular POST verfügbar sind, beibehalten verwenden sie die Form Sammlung. Weitere Informationen zu den Unterschieden zwischen Sitzungszustand und anderen Alternativen zur Zustandsverwaltung finden Sie unter ASP.NET Empfehlungen für die Zustandsverwaltung.

Eigenschaften

Name Beschreibung
CodePage

Dient zum Abrufen oder Festlegen des Zeichensatzesbezeichners für die aktuelle Sitzung.

Contents

Ruft einen Verweis auf das aktuelle Sitzungsstatusobjekt ab.

CookieMode

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

Count

Ruft die Anzahl der Elemente in der Sitzungsstatusauflistung ab.

IsCookieless

Ruft einen Wert ab, der angibt, ob die Sitzungs-ID in die 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 von Sitzungszustandswerten synchronisiert wird (Threadsicher).

Item[Int32]

Dient zum Abrufen oder Festlegen eines Sitzungswerts nach numerischem Index.

Item[String]

Dient zum Abrufen oder Festlegen eines Sitzungswerts anhand des Namens.

Keys

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

LCID

Dient zum Abrufen oder Festlegen des Gebietsschemabezeichners (LCID) der aktuellen Sitzung.

Mode

Ruft den aktuellen Sitzungszustandsmodus ab.

SessionID

Ruft den eindeutigen Bezeichner für die Sitzung ab.

StaticObjects

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

SyncRoot

Ruft ein Objekt ab, das verwendet werden kann, um den Zugriff auf die Auflistung von Sitzungszustandswerten zu synchronisieren.

Timeout

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

Methoden

Name Beschreibung
Abandon()

Bricht die aktuelle Sitzung ab.

Add(String, Object)

Fügt der Sitzungsstatusauflistung ein neues Element hinzu.

Clear()

Entfernt alle Schlüssel und Werte aus der Sitzungsstatusauflistung.

CopyTo(Array, Int32)

Kopiert die Auflistung von Sitzungszustandswerten in ein eindimensionales Array, beginnend am angegebenen Index im Array.

Equals(Object)

Bestimmt, ob das angegebene Objekt dem aktuellen Objekt entspricht.

(Geerbt von Object)
GetEnumerator()

Gibt einen Enumerator zurück, der verwendet werden kann, um alle Namen der Sitzungszustandsvariablen in der aktuellen Sitzung zu lesen.

GetHashCode()

Dient als Standardhashfunktion.

(Geerbt von Object)
GetType()

Ruft die Type der aktuellen Instanz ab.

(Geerbt von Object)
MemberwiseClone()

Erstellt eine flache Kopie der aktuellen Object.

(Geerbt von Object)
Remove(String)

Löscht ein Element aus der Sitzungsstatusauflistung.

RemoveAll()

Entfernt alle Schlüssel und Werte aus der Sitzungsstatusauflistung.

RemoveAt(Int32)

Löscht ein Element in einem angegebenen Index aus der Sitzungsstatusauflistung.

ToString()

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

(Geerbt von Object)

Erweiterungsmethoden

Name Beschreibung
AsParallel(IEnumerable)

Aktiviert die Parallelisierung einer Abfrage.

AsQueryable(IEnumerable)

Wandelt eine IEnumerable in eine IQueryableum.

Cast<TResult>(IEnumerable)

Wandelt die Elemente eines IEnumerable in den angegebenen Typ um.

OfType<TResult>(IEnumerable)

Filtert die Elemente einer IEnumerable basierend auf einem angegebenen Typ.

Gilt für:

Weitere Informationen