HttpSessionState Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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>
</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>
</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>
</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>
</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 |
| 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. |