
session variable mixup in ASP.NET?ASP.NET是否有可能混淆哪个用户与服务器上的哪个会话变量相关联? 会话变量是否一成不变地与在时间,空间和维度上创建它们的原始用户联系在一起? 回答您的原始问题:会话被键入到放置在Cookie中的ID。使用一些随机数加密例程生成此id。它不能保证是唯一的,但是在会话的整个生命周期中都不太可能被复制。即使您的会议运行了整个工作日。一个真正受欢迎的网站可能甚至需要数年才能生成一个重复的密钥(没有任何统计数据或事实来支持该密钥)。 说了这么多,似乎您的问题似乎不是会话值混淆了。我首先要看的是连接池。默认情况下,ADO池连接,但是如果您请求的用户名/密码不在该池中,则它应该为您提供一个新的连接。如果您的站点很大,则提示可能是将来的性能瓶颈。自从我使用SQL Server以来已经有一段时间了,在Oracle中,可以进行一个调用来切换用户的身份。如果SQL Server中没有等效项,我会感到惊讶。您可以尝试使用通用的用户名/密码连接到数据库,然后执行身份切换调用,然后再将连接移交给其余代码。 这取决于您的会话提供程序,如果您已经以不再唯一的方式覆盖了会话密钥生成,则可能有多个用户正在访问同一会话。 您看到什么行为?您确定所讨论的变量没有静态作用吗? 我的猜测是您正在重用类的静态字段来保存连接字符串。这些静态字段可在多个IIS请求中重复使用,因此您可能只会在"上次更新者"中看到最近登录的用户。 顺便说一句,除非您有充分的理由这样做,否则您不应该这样连接数据库。您要防止使用连接池,这会损害高负载下的性能。 您能否弹出调试器,看看是否确实在该连接字符串上传递了正确的值?它将迅速帮助您确定问题所在的哪一方面。 另外,请确保没有任何连接代码具有针对连接或用户的静态属性,或者在更新触发之前,一个用户的连接可能已被最新用户的连接替换。 更多信息: 我有一个应用程序,它从登录页面获取用户ID /密码并将其存储在会话变量中。我将其放入连接字符串中以调用SQL Server。 更新表格后,我们在数据库中使用" system_user"来标识"最后更新者"用户。我们看到了一些奇怪的行为,在这些行为中,我们期望被列出的用户是不正确的,并且正在显示其他人。 这是不可能的。会话与创建者相关。 您是否要混淆,或者您有看起来像混淆的情况? 会话绑定到用户cookie,在正常情况下发生混乱的可能性很小,但是如果使用分布式会话状态,则可能会出现问题。 虽然一切皆有可能。 。 。 。 否,除非您将会话状态存储在sql Server或其他进程外存储中,然后将其弄乱。 。 。 |