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:
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
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.
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;
}
}
}
}
}




