ariáveis de sessão perdidas por algum moti

Tento configurar uma loja virtual. Ao lado de todos os itens que eu tenhoasp:imagebutton quando este botão de imagem é clicado, estou verificando se a sessão varsession["basket"] existe ou não, caso contrário, adiciono os valores em uma lista (classe de entidade) e adiciono esta lista na sessã

se a sessão não estiver vazia, recupero os valores da sessão para List e altero a lista e adiciono a lista novamente à sessã

Questão

Por alguma razão, perco a variável de sessão, de repente. Eu verifiquei no meu relógio (hora) e é imprevisível, às vezes leva menos de 1 minuto, às vezes 3 minutos e às vezes 5 minutos etc ....

por que perco a variável de sessão?

Pesquisei no Google e descobri - isso pode acontecer se você usarResponse.Redirect - sem o parâmetro false, ou se você estiver em umUpdatePanel etc.

Estou perdendo a variável na mesma página no moment

Toda a ideia é colocada em uma variável de sessão e efetua checkout e recupera a variável de sessão no segundoaspx page ... mas nem sempre isso funciona, porque na maioria das vezes as variáveis da sessão ficam vazias. E às vezes funciona.

alguém pode aconselhar? o que e onde preciso verificar? Em algumas páginas do site (google), eles recomendam o uso do cache, mas o cache é baseado em aplicativos, para que todos recuperem o mesmo valo

Na minha página, qualquer usuário (usuário autenticado ou anônimo) em outras palavras, qualquer usuário sem login deve poder solicitar (enviarei uma fatura para pagar antecipadamente) ....

Não estou usando o webfarm, nem o web garden ... Acabei de verificar o IIS - site - estado da sessão - Está em processo, configurações de cookie = usar cookies, nome = asp.net_sessionid, time-out = 20 ... .

Conselho por favor

EstáC#, ASPX 3.5, IIS7.5

Não tenho PAGE_LOAD na minha página ASP

// o único lugar em que coloco o sessoin = null é um botão de link, para o resto não coloco nulo na sessão ["basket"] ....

protected void lnkDeleteAllSelected_Click(object sender, EventArgs e)
    {
        Session["Basket"] = null;
        ReloadBasketItems();

    }

 protected override void OnInit(EventArgs e)
    {

        base.OnInit(e);
        //System.Diagnostics.Debugger.Break();

        lvJuridisch.ItemDataBound += new EventHandler<ListViewItemEventArgs>(this.lv_ItemDataBound);
        lvJuridisch.DataBound += new EventHandler(lv_DataBound);

    }

imgButtonAddtoBasket -> é definido como asp: imagebutton no asp: listview

 protected void imgButtonAddtoBasket_Click(object sender, ImageClickEventArgs e)
    {
        ListViewDataItem lvi = ((sender as ImageButton).NamingContainer) as ListViewDataItem;
        DataKey currentDataKey = (lvi.NamingContainer as ListView).DataKeys[lvi.DataItemIndex];
        WebShopInfo SingleItem = new WebShopInfo();
        SingleItem.cd_type_pub = currentDataKey[0].ToString();
        SingleItem.no_pub = currentDataKey[1].ToString();
        SingleItem.no_suite_pub = Convert.ToInt32(currentDataKey[2]);
        SingleItem.cd_langue = Convert.ToChar(currentDataKey[3]);
        SingleItem.lb_titre_red = (lvi.FindControl("HiddenfieldProductRed") as HiddenField).Value;

        SingleItem.m_price = Convert.ToDecimal((lvi.FindControl("hiddenField_M_Price") as HiddenField).Value);
        SingleItem.nm_price = Convert.ToDecimal((lvi.FindControl("hiddenField_NM_Price") as HiddenField).Value);
        SingleItem.mt_pourc_tva = Convert.ToDecimal((lvi.FindControl("hfBTW") as HiddenField).Value);


        List<WebShopInfo> lws = new List<WebShopInfo>();
        if (Session["Basket"] == null)
        {

            //Session is empty so add listview to the session....
            //Session.Timeout = 20;  -- I tried this but this is not working too...
            lws.Add(SingleItem);
            Session["Basket"] = lws;
        }
        else
        {
            //Session is not empty so get asp:listview from the session.
            lws = Session["Basket"] as List<WebShopInfo>;

            WebShopInfo wsi = lws.Where(a => a.cd_type_pub == SingleItem.cd_type_pub &&
                                            a.no_pub == SingleItem.no_pub &&
                                            a.no_suite_pub == SingleItem.no_suite_pub &&
                                            a.cd_langue == SingleItem.cd_langue).SingleOrDefault<WebShopInfo>();
            if (wsi != null)
                lws.Remove(wsi);

            if (SingleItem.Count > 0)
                lws.Add(SingleItem);
            Session["Basket"] = lws;
        }

        ReloadBasketItems();
    }

questionAnswers(5)

yourAnswerToTheQuestion