ASP.NET中的会话变量混淆?

时间:2008-09-18 12:26:00

标签: asp.net session variables

ASP.NET是否可以混淆哪个用户与服务器上的哪个会话变量相关联?会话变量是否与在时间,空间和时间上创建它们的原始用户不可分割地联系在一起。尺寸?

8 个答案:

答案 0 :(得分:2)

这取决于您的会话提供程序,如果您以不再唯一的方式覆盖会话密钥生成,则多个用户可能正在访问同一会话。

你看到了什么行为?你确定你所谈论的变量没有静态吗?

答案 1 :(得分:2)

要回答您的原始问题:会话键入了放置在Cookie中的ID。使用一些随机数加密例程生成此id。它不能保证是唯一的,但它不太可能在会话的生命周期中被复制。即使您的会话运行了整整一个工作日。一个非常受欢迎的网站甚至可能需要数年才能生成一个重复的密钥(没有统计数据或事实可以支持它)。

说完所有这一切似乎并不是你的问题与会话值混淆了。我要开始关注的第一件事是连接池。默认情况下,ADO池连接,但如果您使用不在池中的用户名/密码请求连接,则应该为您提供新连接。如果您的网站非常大,提示将来可能会成为性能瓶颈。自从我使用SQL Server以来已经有一段时间了,在Oracle中有一个可以切换用户身份的调用。如果在SQL Server中没有等效的话,我会感到惊讶。您可以尝试使用通用用户名/密码连接到数据库,然后在将连接交还给其余代码之前执行该身份切换调用。

答案 2 :(得分:0)

虽然一切皆有可能。 。 。

不,除非您在sql server或其他一些进程外存储中存储会话状态,然后再搞乱它。 。

答案 3 :(得分:0)

会话绑定到用户cookie,在正常情况下出现混乱的可能性很小,但是如果使用分布式会话状态可能会出现问题。

答案 4 :(得分:0)

这是不可能的。会话与创作者联系在一起。

你想混淆,或者你看起来像是混淆了吗?

答案 5 :(得分:0)

更多信息:

我有一个应用程序从登录页面获取用户ID /密码并将其存储在会话变量中。我将它放入我的连接字符串中以调用SQL Server。

当表格更新时,我们在数据库中使用“system_user”来识别“最后更新者”用户。我们看到一些奇怪的行为,我们期望列出的用户不正确,并且它正在显示其他人。

答案 6 :(得分:0)

你可以在调试器中弹出并查看是否确实在该连接字符串上传递了正确的值?它会很快帮助您确定问题的哪一方面。

还要确保连接代码中没有任何一个具有连接或用户的静态属性,或者一个用户可能会在更新触发之前将其连接替换为最新用户的连接。

答案 7 :(得分:0)

我的猜测是你重新使用类上的静态字段来保存连接字符串。这些静态字段在多个IIS请求中重复使用,因此您可能只会在“上次更新时”中看到最近登录的用户。

顺便说一句,除非你有一个非常好的理由,否则你不应该像这样连接到数据库。您正在阻止自己使用连接池,这会在高负载下损害性能。