Usuário com melhor resposta
Confusão de sessão

Pergunta
-
Bom dia, pessoal!
Até onde sabemos, sessões (independente do mecanismo de gravação) são conjuntos únicos de valores para cada SessionID. Acontece que em alguns casos de sobrecarga da aplicação web e após reiniciar a pool, usuários relataram que receberam informações referentes a outros usuários (nomes, endereço etc). O mais curioso é que são usuários de locais diferentes que nunca teriam acessado a conta das informações que supostamente foram mostradas, portanto é impossível que fossem dados de cache.
Até onde pesquisei, encontrei menção de casos parecidos, mas nenhuma resposta satisfatória no sentido de dizer se isto realmente pode ser um problema do ASP.NET e como evitar (ou resolver).
Alguém já viu uma situação como esta?
ATT
Respostas
-
Desculpem pela falta de retorno. Acabei descobrindo que realmente havia um problema em um ponto da aplicação onde a sessão é manipulada. Claro que só podia ser isto. Jamais haveria um erro deste tipo no Asp.NET.
Obrigado!- Marcado como Resposta Filipe B CastroModerator terça-feira, 31 de outubro de 2017 19:05
-
Não vi essa situação especificamente, no entanto o problema pode ser outro.
Exemplo: você guarda informações em cookies. Esses cookies tem uma mesma "tag" ou nome, ou valor ... então 2 usuários que tenham usado o mesmo PC por exemplo, poderão vir a submeter os mesmos cookies e consequentemente receber a mesma informação.
Outra situação é no uso de variáveis "static" (C# - ou "shared" em VB). Ao contrário do que pode parecer, variáveis "static" NÃO SÃO SEGMENTADAS POR SESSÃO - ou seja, essa declaração:
public class Abc { public static string MeuTexto = "Eu sou estático"; }
Estará disponível para todas as sessões e elas visualizarão os mesmos valores. Então se a SessionID (1) alterar o valor de "MeuTexto" para "Sammuel" a SessionID (2) ao ler a varíavel verá "Sammuel" e não "Eu sou estático".
Então vale revisar a informação que os usuários relataram receber; se for algo que você armazenou em um cookie ou em uma variável compartilhada ("static"/"shared") durante um processamento qualquer. Fora isso, tudo que for referente a sessão deve ser armazenado no objeto "Session", e até então não vi nenhum caso de troca de informações entre 2 Sessions diferentes.
- Marcado como Resposta Filipe B CastroModerator segunda-feira, 30 de outubro de 2017 16:10
-
Bom dia,
Como são em máquinas/navegadores separados, talvez algum proxy esteja "cachiando" no meio da requisição. Ja verificou se tem alguma classe estática sendo usada para isso.
Tenta colocar o cache privado no iis ou na propria página asp.net
- 1. Open your IIS Manager, navigate to the level you want to manage.
- 2. In Features View, Double click “HTTP Respond Headers” feature.
- 3. Click “Add…” on the Actions Panel
Fill in the pop-up window:
Name: Cache-Control
Value: private
- Editado welington jrModerator terça-feira, 24 de outubro de 2017 12:20
- Marcado como Resposta Filipe B CastroModerator segunda-feira, 30 de outubro de 2017 16:10
Todas as Respostas
-
Não vi essa situação especificamente, no entanto o problema pode ser outro.
Exemplo: você guarda informações em cookies. Esses cookies tem uma mesma "tag" ou nome, ou valor ... então 2 usuários que tenham usado o mesmo PC por exemplo, poderão vir a submeter os mesmos cookies e consequentemente receber a mesma informação.
Outra situação é no uso de variáveis "static" (C# - ou "shared" em VB). Ao contrário do que pode parecer, variáveis "static" NÃO SÃO SEGMENTADAS POR SESSÃO - ou seja, essa declaração:
public class Abc { public static string MeuTexto = "Eu sou estático"; }
Estará disponível para todas as sessões e elas visualizarão os mesmos valores. Então se a SessionID (1) alterar o valor de "MeuTexto" para "Sammuel" a SessionID (2) ao ler a varíavel verá "Sammuel" e não "Eu sou estático".
Então vale revisar a informação que os usuários relataram receber; se for algo que você armazenou em um cookie ou em uma variável compartilhada ("static"/"shared") durante um processamento qualquer. Fora isso, tudo que for referente a sessão deve ser armazenado no objeto "Session", e até então não vi nenhum caso de troca de informações entre 2 Sessions diferentes.
- Marcado como Resposta Filipe B CastroModerator segunda-feira, 30 de outubro de 2017 16:10
-
Bom dia,
Como são em máquinas/navegadores separados, talvez algum proxy esteja "cachiando" no meio da requisição. Ja verificou se tem alguma classe estática sendo usada para isso.
Tenta colocar o cache privado no iis ou na propria página asp.net
- 1. Open your IIS Manager, navigate to the level you want to manage.
- 2. In Features View, Double click “HTTP Respond Headers” feature.
- 3. Click “Add…” on the Actions Panel
Fill in the pop-up window:
Name: Cache-Control
Value: private
- Editado welington jrModerator terça-feira, 24 de outubro de 2017 12:20
- Marcado como Resposta Filipe B CastroModerator segunda-feira, 30 de outubro de 2017 16:10
-
Boa tarde,
Por falta de retorno essa thread está encerrada.
Se necessário, favor abrir uma nova thread.
Atenciosamente,Filipe B de Castro
Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.
-
Desculpem pela falta de retorno. Acabei descobrindo que realmente havia um problema em um ponto da aplicação onde a sessão é manipulada. Claro que só podia ser isto. Jamais haveria um erro deste tipo no Asp.NET.
Obrigado!- Marcado como Resposta Filipe B CastroModerator terça-feira, 31 de outubro de 2017 19:05