Partilhar via


HttpSessionState Classe

Definição

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>
            &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>

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 <object Runat="Server" Scope="Session"/> dentro do arquivo de aplicativo Global.asax do ASP.NET.

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.

Aplica-se a

Confira também