Pergunta

É possível que ASP.NET para misturar-se que o usuário está associada com o qual variável de sessão no servidor? São variáveis ??de sessão imutavelmente vinculado ao usuário original que os criou ao longo do tempo, espaço e dimensão?

Foi útil?

Solução

Para responder à sua pergunta original: Sessões têm formatos especiais para um id que é colocado em um cookie. Este ID é gerado usando algum número aleatório criptografia rotinas. Não é garantido que ser exclusivo, mas é altamente improvável que ele nunca vai ser duplicado no espaço de vida de uma sessão. Mesmo se as suas sessões de funcionar por dias de trabalho completos. Ele provavelmente levaria anos para um site muito popular até mesmo gerar uma cópia da chave (Sem estatísticas ou fatos para fazer isso).

Dito tudo isso não parece que o problema é com valores de sessão levantar-se mista. A primeira coisa que eu iria começar a olhar é o pool de conexão. ADO piscinas conexões por padrão, mas se você solicitar uma conexão com um nome de usuário / senha que não é na piscina deve dar-lhe uma nova conexão. Dica que pode ser um gargalo de desempenho no futuro, se o seu site é muito grande. Tem sido um tempo desde que eu trabalhei com SQL Server, no Oracle há uma chamada que pode ser feito para mudar a identidade do usuário. Eu ficaria surpreso se não houvesse equivalente em SQL Server. Você pode tentar se conectar ao seu banco de dados com um nome de usuário genérico / senha e, em seguida, executar essa chamada interruptor de identidade antes de devolver a conexão com o resto do seu código.

Outras dicas

Depende do seu provedor de sessão, se tiver anulado a geração chave de sessão de uma forma que não é único, em seguida, vários usuários podem estar acessando a mesma sessão.

O comportamento que você está vendo? E você tem certeza que não há nenhuma estática em jogo com as variáveis ??que você está falando?

enquanto tudo é possível. . . .

Não, a menos que você está armazenando o estado da sessão no servidor SQL ou algum outro fora do armazenamento processo e, em seguida, brincar com ela. . .

A sessão está vinculado a um cookie de usuário, as chances de que bagunçar em cenário normal é muito improvável, no entanto, poderia haver problemas se estiver usando o estado da sessão distribuída.

Não é possível. Sessões estão vinculados ao criador.

Você quer misturar-se, ou você tem um caso quando parece que se mista?

Mais informações:

Eu tenho um aplicativo que leva o ID do usuário / senha na página de login e as armazena em uma variável de sessão. I plop-lo em minha cadeia de ligação para fazer chamadas para SQL Server.

Quando uma tabela é atualizada, estamos usando 'SYSTEM_USER' no banco de dados para identificar a 'última actualização por' user. Nós estamos vendo algum comportamento estranho em que o usuário estamos esperando coletados é incorreta, e ele está mostrando outra pessoa.

Você pode aparecer no depurador e ver se o valor correto é de fato sendo aproveitado que seqüência de conexão? Seria rapidamente ajudá-lo idenfidade que lado o problema está ligado.

Certifique-se também que nenhum do código de conexão tem propriedades estáticas para conexão ou usuário, ou um usuário pode ter sua conexão substituído com o do usuário mais recente antes dos fogos de atualização off.

Meu palpite é que você está re-usando um campo estático em uma classe para manter a seqüência de conexão. Esses campos estáticos são reutilizados através de vários IIS pedidos assim que você é, provavelmente, apenas de ter visto mais recentemente usuário conectado na 'última actualização por'.

BTW, a menos que tenha uma boa razão para fazê-lo, então você não deve se conectar ao DB assim. Você está impedindo-se de usar o pool de conexão que está indo para o desempenho ferido sob altas cargas.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top