ASP.NET – Session Scope – C#

Publicado: 1 de dezembro de 2014 em C#

O escopo de um objeto descreve a disponibilidade de sua abrangência e quem tem acesso a ele. Por exemplo, se um objeto é definido para ter alcance a uma pagina página, então ele está disponível apenas durante a duração da solicitação atual nessa página antes de ser destruído. Neste caso, somente a página atual tem acesso a esses dados, e ninguém mais pode lê-lo. No outro extremo da escala, se um objeto tem espaço de aplicação, em seguida, qualquer página pode utilizar os dados porque ele estará disponível durante toda a aplicação.

Um objeto da sessão é mantido para cada usuário que solicita uma página ou documento de um aplicativo ASP.NET. Variáveis armazenadas no objeto Session não são descartadas quando o usuário move a partir de uma página para outra no pedido; em vez disso, essas variáveis persistem enquanto o usuário está acessando páginas em seu aplicativo.

Page Class

Representa um arquivo .aspx, também conhecida como uma página Web Forms, solicitada a partir de um servidor que hospeda um aplicativo Web ASP.NET.

Page.Session Property

Obtém o objeto Session atual fornecido pelo ASP.NET.

Utilizando Variáveis de Sessão

1- Crie uma aplicação do tipo ASP.NET Web Application com o modelo C# Empty e chame seu projeto de AspNetSessionScope, crie uma nova pagina WebForms chamada default. Crie também uma classe chamada Cor. Utilize o código abaixo para cada respectivo arquivo e compile a aplicação:

Página Inicial

Página Inicial

2 – O evento Page_Load cria uma instancia do objeto da classe Cor e modifica o valor da cor do elemento DIV da pagina aspx de acordo com o valor inicializado pelo construtor do objeto Cor.

  • Abra uma nova aba do navegador e copie e cole a url da pagina, você deve obter duas paginas com o texto vermelho.
  • Volte na primeira aba e inclua o parâmetro cor no final da url e pressione enter: ?Cor=blue
Alimenta Paramêtro

Alimenta Parâmetro

3 – A cor foi modificada e o valor do parâmetro foi armazenado em uma variável de sessão que responsável por alterar a cor do elemento DIV nas seguintes condições:

  • Se existir um parâmetro ou se houver uma variável de cor atrelada a sessão.
  • Selecione a outra aba e a cor do elemento DIV ainda permanece vermelha, atualize a pagina e pronto a pagina mudará a cor do elemento DIV de acordo com a cor armazenada na sessão.
  • Você pode mudar a cor do parâmetro na primeira aba e atualizar a pagina na segunda aba quantas vezes quiser, pode ainda abrir outras abas e a cor do elemento DIV sempre utilizara a cor armazenada na sessão da aplicação.
  • Abra outro navegador, cole a url da segunda aba sem o parâmetro e poderá ver que ele inicializou a cor do objeto Cor (vermelho) porque possui sua própria sessão.
Aba 2 - Sessão

Aba 2 – Sessão

Exemplo:

Neste exemplo criamos uma pagina que lê a cor de um objeto e armazena em uma sessão, você pode modificar a cor através de um parâmetro, abrir novas abas no mesmo navegador e verificar como funciona uma variável de sessão. Você também pode abrir outro navegador e verificar que a variável é inicializada novamente por se tratar de uma nova sessão.

C#

Cor.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace AspNetSessionScope
{
    public class Cor
    {
        // Declara atributo
        private string cor;

        public Cor()
        {
            // Inicializa cor no construtor
            cor = "red";
        }

        // Propriedades
        public string MinhaCor
        {
            get
            {
                return cor;
            }

        }
    }
}

default.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="default.aspx.cs" Inherits="AspNetSessionScope._default" %>
<%@ Import Namespace="AspNetSessionScope" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Desenvolvimento Aberto</title>
    <style type="text/css">

#MeuDiv {
    background-color: lightgrey;
    width: 300px;
    padding: 25px;
    border: 20px solid black;
    margin: 25px;
}

</style>
</head>
<body>
    <form id="form1" runat="server">
    <div id="MeuDiv" runat="server">
    <h1>ASP.NET - Desenvolvimento Aberto</h1>

    <h2>Escopo da Sessão - Cor</h2>

    <h3>Este é o valor da cor:</h3>
        <%
            // Se existir sessão utiliza cor
            // se não existir utiliza instancia do objeto
            string sessionCor = (string)Session["scor"];

            if (sessionCor == null)
            {
                Cor cor = new Cor();
                Response.Write(cor.MinhaCor);
            }
            else
            {
                Response.Write(sessionCor);
            }
        %>
    </div>
    </form>
</body>
</html>

default.aspx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace AspNetSessionScope
{
    public partial class _default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            // Define cor inical
            Cor cor = new Cor();
            MeuDiv.Style["color"] = cor.MinhaCor;

            // Recupera parmetro
            string parametro = Request.QueryString["Cor"];

            if (parametro != null)
            {
                // Modifica DIV e guarda cor na sessão
                MeuDiv.Style["color"] = parametro;
                Session["scor"] = parametro;
            }
            else
            {
                // Se existir sessão modifica DIV
                if (Session["scor"] != null)
                {
                    string sessionCor = (string)Session["scor"];
                    MeuDiv.Style["color"] = sessionCor;
                }
            }
        }
    }
}
Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s