none
session perdendo seu valor RRS feed

  • Pergunta

  • bom dia pessoal,tenho seguinte codigo da pagina principal de minha aplicação,aumentei o timeout 40 <sessionState timeout="40" > e mesmo assim perde valor session.

    tenho uma aplicação em vb 6 que utiliza estes relatorios em asp.net quando logo na aplicação passo por url o usuario para carregar a sessão da pagina ,mas quando estou em outra pagina  e quando clico em voltar acontece isto .

    codigo botão voltar ,apenas executo PostBackUrl="~/Default.aspx"

      <td><asp:Button ID="btnVisualizar" runat="server" Text="Visualizar" OnClick="btnVisualizar_Click" CssClass="Button" />&nbsp;<asp:Button
                            ID="btnVoltar" runat="server" CssClass="Button" PostBackUrl="~/Default.aspx"
                            Text="Voltar" /></td>

       if (! IsPostBack)
            {
                if (Request["CDUSU"] == null)
                {

                    if (Session["CDUSU"] == null)
                    {
                   
                        Response.Redirect("~/Puxada/Aviso.aspx");

                    }
                }
                else
                {
                    Session["CDUSU"] = Request.QueryString["CDUSU"];
                }
              
            }

    quarta-feira, 7 de março de 2012 11:31

Todas as Respostas

  • Suporte, bom dia. Se você está tentando na página Default.aspx, você deve enviar o valor pela Querystring:

    Default.aspx?CDUSU=1234

    Atenciosamente,

    Onofre A. Juvencio Junior

    (Se a achou útil o post, por favor, marque-o como resposta)

    quarta-feira, 7 de março de 2012 12:06
  • bom dia ,como carrego este valor na session["CDUSU"] não passo este valor pela url nos botoes de voltar

    apenas executo PostBackUrl="~/Default.aspx"

    quarta-feira, 7 de março de 2012 13:20
  • Vamos ler o seu código, deve ter coisa escondida porém se apenas isso teremos na primeira um if(!IsPostBack) que será chamado apenas quando ocorrer uma requisição HTTP POST D

    epois sinceramente não entendi para que o uso Request["CDUSU"] = null parece ser alguma gambiarra, depois você verifica se a sessão esta nula como ela estará nula então vocÊ chama a página aviso.

    Dentro da página aviso você faz alguma coisa e depois volta para a página Default.aspx, só que quando você voltar deve ter um valor setado para QueryString["CDUSU"], e como

    não tem esse valor porque vocÊ não realiza um procedimento do tipo QueryString["CDUSU"] dentro da aspx.cs da página Aviso então logo você nunca conseguira carregar sua variável de sessão CDUSU com um valor.

    Outra coisa eu não sei em que momento você passa sua QueryString, exemplo temos página A, B e C ... aonde A = UMA PAGÍNA QUALQUER, B = PÁGINA DEFAUL e C = PÁGINA AVISO ...

    do jeito que você escreveu ai eu entendo que vocÊ quando chama a página B passa uma QueryStgring do tipo Default.aspx?CDUSU=1234, só que vocÊ falou que não pode utilizar

    QueryString.

    Resposta: Dentro da sua página aviso já que lá dentro vc deve ter o valor de CDSU passa esse valor para sua variável de sessão Session["CDSU"] = "MEU CDSU É";

    Segue um exemplo que eu fiz para você observar.

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    namespace DevBrasilQualiCorp
    {
        public partial class About : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                Session["CDUSU"] = "MeuValor";
            }
            protected void btnVoltar_Click(object sender, EventArgs e)
            {
                Response.Redirect("Default.aspx");   
            }
        }
    }

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    namespace DevBrasilQualiCorp
    {
        public partial class _Default : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    if (Session["CDUSU"] != null)
                    {
                        var suaVariavel = Session["CDUSU"];
                    }
                }
            }
            protected void btnVisualizar_Click(object sender, EventArgs e)
            {
                Response.Redirect("About.aspx");   
            }
        }
    }
    Abraços,

    Leandro Rodrigues


    Caso a resposta tenha ajudado, não esqueça de marcar como resposta válida

    quinta-feira, 8 de março de 2012 16:13
  •      segue meu codigo ,na minha pagina do projeto funciona ou seja se eu entrar  via Browser fica normal mas como eu rodo este relatorio via um form no vb 6 acontece isto de perder a sessão quando volto.

    detalhe se eu não clicar no voltar da pagina e simplesmente usar o botão Backspace o valor da sessão permanesce.

          TableRow r = new TableRow();
            TableCell c = new TableCell();
            int rows = 0;
            //string vCAUSU = "";

            MenusData vMenu = new MenusData();


            ///Session["CDUSU"] = "ADMIN";
            //vCAUSU = "ADMIN";

            if (!IsPostBack)
            {
                Session["CDUSU"] = Request.QueryString["CDUSU"];

                if ( Session["CDUSU"] == null)
                {
                    Response.Redirect("~/Puxada/Aviso.aspx");
                    //Session["CDUSU"] = Request.QueryString["CDUSU"];

                }

            }

            if (Convert.ToString( Session["CDUSU"] ) != "")
                {

                    DataTable Menus = vMenu.MenusUsuario(Convert.ToString( Session["CDUSU"] ));
                //DataTable Menus = vMenu.MenusUsuario("RICARDO");

                foreach (DataRow rs in Menus.Rows)
                {

                    HyperLink hl = new HyperLink();

                    TableRow tRow = new TableRow();
                    tRow.Font.Bold = true;
                    TableCell tCell = new TableCell();
                    tCell.BorderWidth = 2;

                    //tCell.ResolveUrl("/Relatorios/teste.aspx");
                    //tCell.Text = rs["NOUSU"].ToString();


                    switch (rs["NOUSU"].ToString().ToUpper())
                    {
                        case "PUXADA AUTOMÁTICA":
                            hl.NavigateUrl = "~/Puxada/PrincipalPuxada.aspx";
                            hl.Text = rs["NOUSU"].ToString().ToUpper();
                            break;
                        default:
                            break;
                    }

                    tCell.Controls.Add(hl);
                    if (rows == 0)
                    {
                        tCell.CssClass = "AlternatingRowStyle";
                        rows = 1;
                    }
                    else
                    {
                        tCell.CssClass = "RowStyle";
                        rows = 0;
                    }
                    // add first cell of 3rd row    

                    tRow.Cells.Add(tCell);

                    TBLMENUS.Rows.Add(tRow);

                    //rw.Field("NOUSU")
                }



            }

                                                 
    terça-feira, 20 de março de 2012 19:54