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, nastavení na úrovni relace a metody správy životnosti.
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ěřte, že uživatelský vstup neobsahuje skript nebo elementy HTML. Další informace najdete 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 relací, která umožňuje ukládat informace spojené s jedinečnou relací prohlížeče napříč několika požadavky. Můžete uložit kolekci hodnot, na které odkazuje název klíče nebo číselný index. Přístup k hodnotám a funkcím relací je k dispozici pomocí HttpSessionState třídy , která je přístupná prostřednictvím Session vlastnosti aktuálního HttpContextobjektu nebo 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 bez vypršení platnosti v prohlížeči, ale můžete také nakonfigurovat aplikaci tak, aby identifikátor relace ukládal v adrese URL nastavením cookieless
atributu na true
nebo UseUri v elementu sessionState v konfiguraci aplikace. Zadáním hodnoty UseDeviceProfile atributu můžete ASP.NET určit, zda jsou soubory cookie podporovány prohlížečem cookieless
. Zadáním hodnoty AutoDetectcookieless
atributu můžete také ASP.NET určit, jestli jsou pro prohlížeč povoleny soubory cookie. Pokud jsou soubory cookie podporovány, když UseDeviceProfile jsou zadány nebo povoleny, když AutoDetect jsou zadány, pak se identifikátor relace uloží do souboru cookie, jinak se identifikátor relace uloží do adresy URL.
Relace se spustí během prvního požadavku a hodnoty relace se zachovají, dokud prohlížeč odešle nový požadavek před uplynutím počtu minut zadaných v průchodu Timeout vlastnosti. Při zahájení nové relace je vyvolána událost relace Start . Tuto událost můžete použít k provedení jakékoli další práce na začátku relace, například k nastavení výchozích hodnot relace. Při vypršení časového limitu Abandon relace je volána metoda nebo je aplikace ASP.NET vypnuta, je vyvolána událost relace End . Tuto událost můžete použít k provedení nezbytného vyčištění. Událost End je vyvolána pouze v případě, že je stav mode
relace nastavený na InProchodnotu .
Pro zvýšení výkonu relace, které používají soubory cookie, nepřidělují úložiště relací, dokud nejsou data skutečně uložena v objektu Session . Další informace najdete ve SessionID vlastnosti .
Stav relace se nezachovává přes hranice ASP.NET aplikace. Pokud prohlížeč přejde do jiné aplikace, informace o relaci nebudou 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 také uložit do databáze SQL Serveru, ASP.NET stavového serveru nebo vlastního serveru. To umožňuje zachovat hodnoty relací v případech, kdy se restartuje proces ASP.NET, iis nebo ASP.NET aplikace, a zpřístupnit hodnoty relací na všech serverech ve webové farmě. Toto chování se konfiguruje nastavením atributu mode
na platnou SessionStateMode hodnotu v elementu sessionState vaší konfigurace aplikace. Další informace najdete v tématu Režimy stavu relace.
Mezi alternativy ke stavu relace patří stav aplikace (viz Application vlastnost) a mezipaměť ASP.NET (viz System.Web.Caching obor názvů), do které se 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živatelů 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ích prvků v ViewState; ; CookiesQueryString vlastnosti ; a pole ve formuláři HTML, která jsou k dispozici z http POST
Form pomocí kolekce. Další podrobnosti o rozdílech mezi stavem relace a dalšími alternativami správy stavu najdete v tématu doporučení ke správě stavu ASP.NET.
Vlastnosti
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 označující, zda ID relace je vložena v adrese URL nebo uložena v souboru cookie HTTP. |
IsNewSession |
Získá hodnotu označující, zda byla vytvořena relace s aktuálním požadavkem. |
IsReadOnly |
Získá hodnotu označující, zda je relace jen pro čtení. |
IsSynchronized |
Získá hodnotu označující, zda přístup ke kolekci hodnot stavu relace je synchronizován (bezpečné z více vláken). |
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 |
SyncRoot |
Získá objekt, který lze použít k synchronizaci přístupu ke kolekci hodnot stavu relace. |
Timeout |
Získá nebo nastaví dobu v minutách mezi požadavky, než zprostředkovatel stavu relace ukončí relaci. |
Metody
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čí, zda se zadaný objekt rovná 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í hashovací funkce. (Zděděno od Object) |
GetType() |
Type Získá z aktuální instance. (Zděděno od Object) |
MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Objectsouboru . (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í
Cast<TResult>(IEnumerable) |
Přetypuje prvky objektu na IEnumerable zadaný typ. |
OfType<TResult>(IEnumerable) |
Filtruje prvky objektu IEnumerable na základě zadaného typu. |
AsParallel(IEnumerable) |
Umožňuje paralelizaci dotazu. |
AsQueryable(IEnumerable) |
Převede objekt na IEnumerableIQueryable. |