HttpSessionState Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Fornece acesso aos valores de estado de sessão, bem como configurações do nível de sessão e métodos de gerenciamento do tempo de vida.
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
- Herança
-
HttpSessionState
- Implementações
Exemplos
O exemplo de código a seguir define e recupera valores do estado da sessão.
Importante
Este exemplo tem uma caixa de texto que aceita a entrada do usuário, que é uma possível ameaça à segurança. Por padrão, ASP.NET páginas da Web validam que a entrada do usuário não inclui elementos html ou script. Para obter mais informações, consulte Visão geral de explorações de script.
<%@ 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>
Comentários
ASP.NET fornece gerenciamento de estado de sessão para permitir que você armazene informações associadas a uma sessão exclusiva do navegador em várias solicitações. Você pode armazenar uma coleção de valores referenciados por um nome de chave ou por índice numérico. O acesso a valores e funcionalidades de sessão está disponível usando a HttpSessionState classe , que é acessível por meio da Session propriedade do atual HttpContextou da Session propriedade do Page.
Os dados de sessão são associados a uma sessão específica do navegador usando um identificador exclusivo. Por padrão, esse identificador é armazenado em um cookie de sessão que não expira no navegador, mas você também pode configurar seu aplicativo para armazenar o identificador de sessão na URL definindo o cookieless
atributo true
como ou UseUri no elemento sessionState da configuração do aplicativo. Você pode ter ASP.NET determinar se há suporte para cookies pelo navegador especificando um valor de UseDeviceProfile para o cookieless
atributo . Você também pode ter ASP.NET determinar se os cookies estão habilitados para o navegador especificando um valor de AutoDetect para o cookieless
atributo . Se houver suporte para cookies quando UseDeviceProfile for especificado ou habilitado quando AutoDetect for especificado, o identificador de sessão será armazenado em um cookie; caso contrário, o identificador de sessão será armazenado na URL.
As sessões são iniciadas durante a primeira solicitação e os valores de sessão persistirão desde que uma nova solicitação seja feita pelo navegador antes do número de minutos especificado na passagem de Timeout propriedade. Quando uma nova sessão é iniciada, o evento de sessão Start é gerado. Você pode usar esse evento para executar qualquer trabalho adicional no início de uma sessão, como definir valores de sessão padrão. Quando uma sessão atinge o tempo limite, o Abandon método é chamado ou o aplicativo ASP.NET é desligado, o evento de sessão End é gerado. Você pode usar esse evento para executar qualquer limpeza necessária. O End evento é gerado somente quando o estado mode
da sessão é definido InProccomo .
Para melhorar o desempenho, as sessões que usam cookies não alocam armazenamento de sessão até que os dados sejam realmente armazenados no Session objeto . Para obter mais informações, consulte a propriedade SessionID.
O estado da sessão não persiste entre ASP.NET limites do aplicativo. Se um navegador navegar para outro aplicativo, as informações da sessão não estão disponíveis para o novo aplicativo.
Os valores de sessão são armazenados na memória no servidor Web, por padrão. Você também pode armazenar valores de sessão em um banco de dados do SQL Server, um servidor de estado ASP.NET ou um servidor personalizado. Isso permite preservar valores de sessão nos casos em que o processo ASP.NET ou IIS ou o aplicativo ASP.NET é reiniciado e disponibilizar valores de sessão em todos os servidores em um farm da Web. Esse comportamento é configurado definindo o mode
atributo como um valor válido SessionStateMode no elemento sessionState da configuração do aplicativo. Para obter mais informações, consulte Modos de estado de sessão.
As alternativas ao estado da sessão incluem o estado do aplicativo (consulte a Application propriedade) e o cache ASP.NET (consulte o System.Web.Caching namespace), que armazena variáveis que podem ser acessadas por todos os usuários de um aplicativo ASP.NET; o perfil ASP.NET (consulte o System.Web.Profile namespace), que persiste valores de usuário em um armazenamento de dados sem expirar usando um tempo limite; ASP.NET System.Web.UI.WebControls, que persistem valores de controle no ViewState; Cookies; a QueryString propriedade ; e campos em um formulário HTML que estão disponíveis de um http POST
usando a Form coleção . Para obter mais detalhes sobre as diferenças entre o estado da sessão e outras alternativas de gerenciamento de estado, consulte ASP.NET State Management Recommendations.
Propriedades
CodePage |
Obtém ou define o identificador de conjunto de caracteres para a serialização atual. |
Contents |
Obtém uma referência ao objeto de estado da sessão atual. |
CookieMode |
Obtém um valor que indica se o aplicativo está configurado para sessões sem cookies. |
Count |
Obtém o número de itens na coleção de estado de sessão. |
IsCookieless |
Obtém um valor que indica se a ID de sessão é inserida na URL ou armazenada em um cookie HTTP. |
IsNewSession |
Obtém um valor que indica se a sessão foi criada com a solicitação atual. |
IsReadOnly |
Obtém um valor que indica se a sessão é somente leitura. |
IsSynchronized |
Obtém um valor que indica se o acesso à coleção de valores de estado de sessão é sincronizado (thread-safe). |
Item[Int32] |
Obtém ou define um valor de sessão por índice numérico. |
Item[String] |
Obtém ou define um valor de sessão pelo nome. |
Keys |
Obtém uma coleção de chaves para todos os valores armazenados na coleção de estado da sessão. |
LCID |
Obtém ou define o LCID (identificador de localidade) da sessão atual. |
Mode |
Obtém o modo de estado da sessão atual. |
SessionID |
Obtém o identificador exclusivo para a sessão. |
StaticObjects |
Obtém uma coleção de objetos declarados por marcas |
SyncRoot |
Obtém um objeto que pode ser usado para sincronizar o acesso à coleção de valores de estado de sessão. |
Timeout |
Obtém ou define a quantidade de tempo, em minutos, permitida entre solicitações antes que o provedor de estado de sessão termine a sessão. |
Métodos
Abandon() |
Cancela a sessão atual. |
Add(String, Object) |
Adiciona um novo item à coleção de estado da sessão. |
Clear() |
Remove todas as chaves e os valores da coleção de estado da sessão. |
CopyTo(Array, Int32) |
Copia a coleção de valores de estado de sessão para uma matriz unidimensional, começando no índice especificado na matriz. |
Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
GetEnumerator() |
Retorna um enumerador que pode ser usado para ler todos os nomes de variável de estado de sessão na sessão atual. |
GetHashCode() |
Serve como a função de hash padrão. (Herdado de Object) |
GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
MemberwiseClone() |
Cria uma cópia superficial do Object atual. (Herdado de Object) |
Remove(String) |
Exclui um item da coleção de estado de sessão. |
RemoveAll() |
Remove todas as chaves e os valores da coleção de estado da sessão. |
RemoveAt(Int32) |
Exclui um item em um índice especificado da coleção de estado de sessão. |
ToString() |
Retorna uma cadeia de caracteres que representa o objeto atual. (Herdado de Object) |
Métodos de Extensão
Cast<TResult>(IEnumerable) |
Converte os elementos de um IEnumerable para o tipo especificado. |
OfType<TResult>(IEnumerable) |
Filtra os elementos de um IEnumerable com base em um tipo especificado. |
AsParallel(IEnumerable) |
Habilita a paralelização de uma consulta. |
AsQueryable(IEnumerable) |
Converte um IEnumerable em um IQueryable. |