Criando uma simples Classe Session em asp.net c#

(Creating a Simple Class Session in asp.net c #)

Olá, webianos.

Neste artigo irei explicar de forma resumida e sintetica, como criar uma simples Classe para tratar Session no seu site desenvolvido em asp.net c#.

Vou ensinar passo a passo para não ter erro.
1º Passo: Criar um projeto.
2º Passo: Criar uma classe.
3º Passo: implementar/instanciar a classe.

1º Passo: Criar um projeto:
1. Abra o Visual Studio, clique em File, New, Web Site…;
2. Templates: ASP.NET Web Site. Location: File System. Language: Visual C#, name: Farma;

2º Passo: Criar uma classe:
1. Em Solution Explorer, Clique com botão direito em cima da raiz do projeto( ou App_Data, ou qualquer outra pasta).
2. Escolha opção Add new item…;
3. Templates: Class, Name: cSession.cs, Language: Visual C#;
4. Clique no botão sim, quando aparecer uma caixa de dialogo com o seguinte texto: “You are attempting to add …. the ‘App_Code’ folder?”. Basicamente, ele pergunta se vc quer salvar esta classe que você criou na pasta default do .NET, que é a pasta App_Code.
5. Seu arquivo deve estar assim:

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

/// <summary>
/// Summary description for cTeste
/// </summary>

public class cSession
{
public cSession()
{
//
// TODO: Add constructor logic here
//

}
}

6. Para melhor organização crie um namespace, sugiro colocar o nome de “meusite”;
7. Crie dentro da class, um public int “nomeSession” e dentro deste crie um set e get;
8. Para exemplo, vou criar uma session com a ID do usuario.
9. Minha propriedade irá chamar UserId, porém minha session(sessão) irá chamar id_user_s;
10. Seu arquivo ficará assim:

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

namespace farma{
/// <summary>
/// Summary description for cSession
/// </summary>

public class cSession
{
public cSession()
{
//
// TODO: Add constructor logic here
//

}
public int UserId
{
set
{
HttpContext.Current.Session.Add(“id_user_s“, value);
}
get
{
return Convert.ToInt16(HttpContext.Current.Session[“id_user_s“]);
}
}
}
}

11. Eu tenho uma padronização propria para nomenclatura de session, sempre eu coloca “nomesession” + “_s”, eu uso este “_s”, para saber exatamente que aquele elemento é uma session. Parece bobo e simples, mas ajuda muito na hora do desenvolvimento.
12. O namespace que criei foi farma, pois estou simulando um site de uma farmacia. você pode usar o nome que quiser para o namespace, o importante é ter uma organização e padrão.

3º Passo: implementar/instanciar a classe:
1. Abrar o sub-arquivo Default.aspx.cs, clique no simbolo [+] ao lado do arquivo Default.aspx;
2. Acrescente um novo using, no meu exemplo vou acrescentar o using farm que é o nome da minha namespace. Assim você está informando ao arquivo que usará elementos do namespace especificado, como se estivesse incluindo o arquivo.
3. Dentro da classe public principal, criei um instancia: private cSession sess = new cSession(); Eu coloquei sess, mas vc pode colocar o nome que quiser.
4. Para utilizar esta session é simples.

Para setar(salvar, alterar ou inserir) um valor na session use:
sess.Userid = 5;

//neste exemplo estou setando o valor 5 para Userid, que será setada na session[“id_user_s”];
//Se tiver um sistema de login, use o set para setar o valor na sessão, no exemplo usamos o id do usuario, mas vc pode criar outra para categoria do usuario, nome do usuario, vc pode criar quantos quiser.

Para get(exibir, recuparar ou retornar) um valor da session use:
int id = sess.Userid;

//aqui vc está trazendo o valor da session userid para dentro da variavel id.
//Depois vc poderá usar o id onde quiser, por exemplo para fazer um log com o id do usuario que realizou a operação, ou se tiver usando um session categoria do usuario vc poderia usar num menu para filtrar as permissões de acesso.

5. O arquivo Default.aspx.cs ficará assim:

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using farma;

public partial class _Default : System.Web.UI.Page
{
private cSession sess = new cSession();
protected void Page_Load(object sender, EventArgs e)
{
//Setar um valor
sess.UserId = 5;

//Get um valor
int id = sess.UserId;
Response.Write(id);

}

}

Amigos, webianos, a ideia deste artigo é a criação da Classes Session, a utilização desta classe é por sua conta. Vc pode usar em varios momentos do seu site. Desde gravação de logs, niveis de permissão, nos selects, update e inserts e dentro de outras classes.
Bom uso, e se tiver alguma dúvida deixe seu comentario com email para eu responder.

Utilizei: Visual Studio 2005 versão 8.0, .NET Framework versão 2.0

9 comentários sobre “Criando uma simples Classe Session em asp.net c#

  1. Pedro Silva disse:

    Muito bom tutorial.

    Estava a precisar de utilizar Sessions em ASP.NET e não fazia ideia como era feito.

    Com este tutorial a explicar passo-a-passo a criação consegui fazê-lo.

    Obrigado!

    • webmaicon disse:

      E ai, Pedro, tudo bem?
      Valeu pela força!

      Gosto de fazer artigo neste formato, pois são mais facies de seguir e entender do inicio ao fim, pois na internet é raro achar artigos completos, normalmente só parte de soluções.

      Abraços….

  2. Rafael disse:

    Sou novato em asp e em c#, e utilizei o seu artigo para criar uma session.

    Mas agora, como faço para atribuir o valor resgatado (Id) em outras páginas do mesmo projeto?

    Abraços,

    • webmaicon disse:

      Olá, Rafael.

      Para usar(resgatar) o valor, primeiro vc precisa instanciar e depois chamar a propriedade estatica, veja abaixo:

      using farma;
      private cSession sess = new cSession();
      //Get um valor
      int id = sess.UserId;
      Response.Write(id);

      • Rafael disse:

        webmaicon, obrigado pelo auxilio, mas ainda não está funcionando para mim. Deixa eu explicar melhor minha situação.

        Criei a classe cSession.cs como descrito, mas usei string ao invés de int. Na minha página Default (Login.aspx.cs) eu coloquei o código abaixo:

        using farma;

        public partial class Login : System.Web.UI.Page
        {
        private cSession sess = new cSession();

        protected void LBAcessar_Click(object sender, EventArgs e)
        {
        sess.UserId = UserName.Text;
        Session.Add(“user”, sess);
        Response.Redirect(“http://localhost/home.aspx”);
        }

        Na página seguinte (home.aspx.cs) eu coloquei isso:

        using farma;

        public partial class Home : System.Web.UI.Page
        {
        private cSession sess = new cSession();

        protected void Page_Load(object sender, EventArgs e)
        {
        String teste = sess.UserId;
        Label2.Text = teste;
        }

        Coloquei este label somente para retornar o valor da session, que na verdade é definida através de um sistema de login. Ao rodar a página, nada é retornado no label.

        Abraços,

      • webmaicon disse:

        Rafa, tudo bem?
        observei alguns detalhes no codigo que vc enviou.
        1. sess.UserId = UserName.Text;
        2. Session.Add(“user”, sess);

        Comentarios:
        Na linha 1, vc esta usando text(string), mas a session é int(inteiro).
        Não precisa da linha 2.
        Substitua estas duas linhas por:
        1. sess.UserId = 2;
        2. ///Session.Add(“user”, sess);

        Se nao funcionar me add no msn para vc me enviar o codigo completo para eu analisar. msn: msnmaicon@hotmail.com

        abraços…

  3. Rafael disse:

    Opa webmaicon, descobri o que era.

    No meu Web.Config eu tinha colocado cookieless=”true”, com mode=”InProc”. Isso não deixava com que minha session carregasse corretamente. Configurei o cookieless para “false” e resolveu.

    Muito obrigado pela sua atenção !

    Um grande abraço !!

  4. Cristhian disse:

    Cara, parabéns pelo tutorial, me livrou de uma enrascada aqui… muito bom mesmo.

    Queria te perguntar uma coisa, tu já trabalhou com mono/linux? Estou com problemas e ta dificil de encontrar algo que pelo menos me esclareça os problemas…

    valeu

    abraço

    • webmaicon disse:

      Ola, Cristhian. Fico feliz em ter te ajudado.

      Em breve vou criar novos artigos.

      Em relação ao mono/linux eu nunca usei, da uma pesquisada no google que vc deve achar alguma coisa legal.

      abraços.. conte sempre comigo!

Deixe uma resposta

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 )

Imagem do Twitter

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

Foto do Facebook

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

Foto do Google+

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

Conectando a %s