HttpSessionState Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Poskytuje přístup k hodnotám stavu relace a také k nastavením na úrovni relace a metodám správy doby života.
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
- Dědičnost
-
HttpSessionState
- Implementuje
Příklady
Následující příklad kódu nastaví a načte hodnoty ze stavu relace.
Důležité
Tento příklad obsahuje textové pole, které přijímá vstup uživatele, což je potenciální bezpečnostní hrozba. Ve výchozím nastavení ASP.NET webové stránky ověřují, že vstup uživatele neobsahuje skripty ani elementy HTML. Další informace naleznete v tématu Přehled zneužití skriptů.
<%@ 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>
Poznámky
ASP.NET poskytuje správu stavu relace, která umožňuje ukládat informace přidružené k jedinečné relaci prohlížeče napříč několika požadavky. Kolekci hodnot odkazovaných na název klíče nebo číselný index můžete uložit. Přístup k hodnotám a funkcím relace je k dispozici pomocí HttpSessionState třídy, která je přístupná prostřednictvím Session vlastnosti aktuálního HttpContextnebo Session vlastnosti Page.
Data relace jsou přidružená ke konkrétní relaci prohlížeče pomocí jedinečného identifikátoru. Ve výchozím nastavení je tento identifikátor uložen v souboru cookie relace, který nevypršela platnost, ale můžete také nakonfigurovat aplikaci tak, aby ukládal identifikátor relace do adresy URL nastavením atributu cookieless na true nebo UseUri v elementu sessionState vaší konfigurace aplikace. Můžete mít ASP.NET určit, zda jsou soubory cookie podporovány prohlížečem zadáním hodnoty UseDeviceProfile atributu cookieless . Můžete také mít ASP.NET určit, zda jsou pro prohlížeč povoleny soubory cookie zadáním hodnoty AutoDetect atributu cookieless . Pokud jsou soubory cookie podporovány, pokud UseDeviceProfile jsou zadány nebo povoleny po AutoDetect zadání, bude identifikátor relace uložen v souboru cookie; jinak bude identifikátor relace uložen v adrese URL.
Relace se spustí během prvního požadavku a hodnoty relace se zachovají, dokud prohlížeč provede nový požadavek před uplynutím počtu minut zadaných ve Timeout vlastnosti. Když začne nová relace, vyvolá se událost relace Start . Tuto událost můžete použít k provedení jakékoli další práce na začátku relace, například nastavení výchozích hodnot relace. Když vyprší časový limit relace, Abandon volá se metoda nebo se ASP.NET aplikace vypne, vyvolá se událost relace End . Tuto událost můžete použít k provedení potřebného vyčištění. Událost End je vyvolána pouze v případě, že je stav mode relace nastaven na InProchodnotu .
Aby se zlepšil výkon, relace, které používají soubory cookie, nepřidělují úložiště relací, dokud se data ve skutečnosti neuloží do objektu Session . Další informace najdete ve vlastnosti SessionID.
Stav relace se neuchovává napříč hranicemi aplikace ASP.NET. Pokud prohlížeč přejde do jiné aplikace, informace o relaci nejsou pro novou aplikaci k dispozici.
Hodnoty relací jsou ve výchozím nastavení uloženy v paměti na webovém serveru. Hodnoty relací můžete uložit také do databáze SQL Serveru, ASP.NET stavového serveru nebo vlastního serveru. To vám umožní zachovat hodnoty relace v případech, kdy se proces ASP.NET nebo iis nebo ASP.NET aplikace restartuje a zpřístupní hodnoty relací na všech serverech ve webové farmě. Toto chování je nakonfigurováno nastavením atributu mode na platnou SessionStateMode hodnotu v elementu sessionState vaší konfigurace aplikace. Další informace najdete v tématu Session-State režimy.
Alternativy ke stavu relace zahrnují stav aplikace (viz Application vlastnost) a mezipaměť ASP.NET (viz System.Web.Caching obor názvů), které ukládají proměnné, ke kterým mají přístup všichni uživatelé aplikace ASP.NET; profil ASP.NET (viz System.Web.Profile obor názvů), který uchovává hodnoty uživatele v úložišti dat bez vypršení jejich platnosti pomocí časového limitu; ASP.NET System.Web.UI.WebControls, které uchovávají hodnoty ovládacího prvku v ViewState; CookiesQueryString a pole ve formuláři HTML, které jsou k dispozici z HTTPPOST. Form pomocí kolekce. Další podrobnosti o rozdílech mezi stavem relace a dalšími alternativami správy stavu najdete v tématu ASP.NET Doporučení pro správu stavu.
Vlastnosti
| Name | Description |
|---|---|
| CodePage |
Získá nebo nastaví identifikátor znakové sady pro aktuální relaci. |
| Contents |
Získá odkaz na aktuální objekt stavu relace. |
| CookieMode |
Získá hodnotu, která označuje, zda je aplikace nakonfigurována pro relace bez souborů cookie. |
| Count |
Získá počet položek v kolekci stavu relace. |
| IsCookieless |
Získá hodnotu určující, zda je ID relace vloženo do adresy URL nebo uložen v souboru cookie HTTP. |
| IsNewSession |
Získá hodnotu určující, zda relace byla vytvořena s aktuálním požadavkem. |
| IsReadOnly |
Získá hodnotu určující, zda relace je jen pro čtení. |
| IsSynchronized |
Získá hodnotu označující, zda je přístup k kolekci hodnot stavu relace synchronizován (vlákno bezpečné). |
| Item[Int32] |
Získá nebo nastaví hodnotu relace podle číselného indexu. |
| Item[String] |
Získá nebo nastaví hodnotu relace podle názvu. |
| Keys |
Získá kolekci klíčů pro všechny hodnoty uložené v kolekci stavu relace. |
| LCID |
Získá nebo nastaví identifikátor národního prostředí (LCID) aktuální relace. |
| Mode |
Získá aktuální režim stavu relace. |
| SessionID |
Získá jedinečný identifikátor relace. |
| StaticObjects |
Získá kolekci objektů deklarovaných značkami |
| SyncRoot |
Získá objekt, který lze použít k synchronizaci přístupu k kolekci hodnot stavu relace. |
| Timeout |
Získá nebo nastaví dobu, v minutách, povolené mezi požadavky, než poskytovatel stavu relace ukončí relaci. |
Metody
| Name | Description |
|---|---|
| Abandon() |
Zruší aktuální relaci. |
| Add(String, Object) |
Přidá novou položku do kolekce stavu relace. |
| Clear() |
Odebere všechny klíče a hodnoty z kolekce stavu relace. |
| CopyTo(Array, Int32) |
Zkopíruje kolekci hodnot stavu relace do jednorozměrného pole počínaje zadaným indexem v poli. |
| Equals(Object) |
Určuje, zda je zadaný objekt roven aktuálnímu objektu. (Zděděno od Object) |
| GetEnumerator() |
Vrátí enumerátor, který lze použít ke čtení všech názvů proměnných stavu relace v aktuální relaci. |
| GetHashCode() |
Slouží jako výchozí funkce hash. (Zděděno od Object) |
| GetType() |
Získá Type aktuální instance. (Zděděno od Object) |
| MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Object. (Zděděno od Object) |
| Remove(String) |
Odstraní položku z kolekce stavu relace. |
| RemoveAll() |
Odebere všechny klíče a hodnoty z kolekce stavu relace. |
| RemoveAt(Int32) |
Odstraní položku v zadaném indexu z kolekce stavu relace. |
| ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |
Metody rozšíření
| Name | Description |
|---|---|
| AsParallel(IEnumerable) |
Umožňuje paralelizaci dotazu. |
| AsQueryable(IEnumerable) |
Převede IEnumerable na IQueryable. |
| Cast<TResult>(IEnumerable) |
Přetypuje prvky IEnumerable na zadaný typ. |
| OfType<TResult>(IEnumerable) |
Filtruje prvky IEnumerable na základě zadaného typu. |