ASP/C# - Variaveis de sessão perdem-se!

MrOverclock

Power Member
Boas,


Estou a construir um site relativamente complexo e estou a ter um problema que está a dar comigo em doido!

Preciso que uma caixa de texto desapareça quando o utilizador clica numa cruz e não quero que ela volte mesmo que se volte à página enquanto se navega.

Comecei por usar uma classe global que usava uma variavel Bool para este caso e uma outra String para outro caso. Acontece que ao navegar pelo site estas variaveis "desapareciam". Então depois descobri as variaveis de sessão (sou novo em c#/ASP, conhecia bem var. de sessão em PHP, nao sabia que existia em c#) e comecei a usar... mas acontece que os valores perdem-se na mesma! Já fiz com que o gajo me mostrasse o ID da sessão e é sempre o mesmo desde sempre mas os valores perdem-se!

Para definir a variavel estou a usar o seguinte código:

Código:
(...)
HttpContext.Current.Session["InitialText"] = "Closed";
(...)

E para verificar se a tal caixa já foi fechada:

Código:
if (HttpContext.Current.Session["InitialText"] == null)
{(...)}
   else
{(...)}

Estas variaveis perdem-se aleatóriamente. Tanto se perdem ao fim de alguns segundos, como minutos, como enquanto se navega como depois de estar parado algum tempo. O que me parece é que é 100% aleatorio e não consigo encontrar um padrão para conseguir reproduzir.

Isto poderá ser alguma configuração no meu Web.Config?

Eu estava a usar algures em um ponto ou dois o Response.Redirect(url), e descobri por aí no google que isto fazia perder as variaveis de sessão, então alterei para Response.Redirect(url, false), como se sugeriu no mesmo sitio para que não se perdessem valores. No entanto continua igual como antes!

Alguém me consegue dar uma ajuda?

Também aceito sugestões para abordar a questão de outra forma que não envolva as variaveis de sessão, ou que simplesmente funcione como desejo!
 
Última edição:
Pode ser um problema de cookies. A session por default usa cookies para guardar os valores. Se o teu browser por alguma razão os limpar, isso perde-se.
 
Porque não guardar essa informação na BD? Ou criares um cookie teu e no pipeline dos requests crias um httpmodule que ve se o cookie esta activo ou nao.
 
Back
Topo