首页 / 知识

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

2023-04-17 02:51:00

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

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或其他进程外存储中,然后将其弄乱。 。 。


变量混合用户空间

最新内容

相关内容

猜你喜欢