Você está aqui: ASP.NET ::: Dicas & Truques ::: Sessão |
Destruindo uma sessão ASP.NET usando o método Abandon() da classe HttpSessionState (e gerando um novo SessionID)Quantidade de visualizações: 9204 vezes |
Uma sessão ASP.NET pode ser destruída usando o método Abandon() da classe HttpSessionState. Uma chamada a este método cancela a sessão atual, tornando-a inválida. Além disso, se você estiver usando os eventos Session_Start e Session_End no arquivo Global.asax, estes serão disparados após a chamada à Abandon(). Primeiro o evento Session_End é disparado e então o evento Session_Start dispara devido à criação de uma nova sessão na próxima requisição. Vamos ver um exemplo? Coloque três botões <asp:Button>, uma caixa de texto <asp:TextBox> e um rótulo <asp:Label> em uma página. Quando digitarmos algum conteúdo na caixa de texto e clicarmos no primeiro botão, o valor será guardado na sessão. Ao clicarmos no segundo botão o valor guardado na sessão será obtido e exibido em um controle Label, juntamente com o SessionID. Finalmente, ao clicarmos no terceiro botão a sessão será destruída. Veja o código completo para a página Default.aspx: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Debug="true" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head id="Head1" runat="server"> <title>Estudos ASP.NET</title> </head> <body> <form id="form1" runat="server"> Valor a ser gravado no sessão:<br /> <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><br /> <asp:Button ID="Button1" runat="server" Text="Gravar valor na sessão" onclick="Button1_Click" /><br /> <asp:Button ID="Button2" runat="server" Text="Obter valor na sessão" onclick="Button2_Click" /><br /> <asp:Label ID="Label1" runat="server" Text="Valor gravado na sessão"> </asp:Label><br /> <asp:Button ID="Button3" runat="server" Text="Destruir a sessão" onclick="Button3_Click" /><br /> </form> </body> </html> Veja agora a implementação do evento Click dos três botões no arquivo de code-behind Default.aspx.cs: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; public partial class _Default : System.Web.UI.Page { protected void Button1_Click(object sender, EventArgs e){ // vamos gravar o conteúdo da caixa de texto na sessão // note que o nome do item é "nome" Session.Add("nome", TextBox1.Text); // vamos avisar que o item foi adicionado à sessão TextBox1.Text = ""; Label1.Text = "O item e seu valor foram adicionados à sessão. " + "O SessionID é: " + Session.SessionID; } protected void Button2_Click(object sender, EventArgs e){ // vamos recuperar o item "nome" na sessão if(Session["nome"] != null){ Label1.Text = "Valor na sessão: " + Session["nome"] + ". " + "O SessionID é: " + Session.SessionID; } else{ Label1.Text = "O item ainda não existe na sessão. " + "O SessionID é: " + Session.SessionID; } } protected void Button3_Click(object sender, EventArgs e){ // vamos destruir a sessão Session.Abandon(); Label1.Text = "A sessão foi abandonada (destruída). " + "O SessionID é: " + Session.SessionID; } } Execute a aplicação e veja os resultados. Note que, mesmo após a destruição da sessão, o valor do SessionID permanence o mesmo. Em algumas situações este comportamento pode ser indesejado. Assim, se quisermos que o ID da sessão seja destruído juntamente com ela, basta alterarmos o código do evento Click do terceiro botão para a seguinte versão: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- protected void Button3_Click(object sender, EventArgs e){ // vamos destruir a sessão Session.Abandon(); Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", "")); // vamos redirecionar para a página inicial...isso criará um novo // cookie com o SessionID Response.Redirect("http://localhost:8010/estudos_aspnet"); } Teste a aplicação novamente e verá que após destruir a sessão atual, a nova sessão terá um SessionID completamente diferente do anterior. |
Link para compartilhar na Internet ou com seus amigos: |
Veja mais Dicas e truques de ASP.NET |
Dicas e truques de outras linguagens |
Códigos Fonte |
Software de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais |
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais |
Linguagens Mais Populares |
1º lugar: Java |