【发布时间】:2018-09-05 03:57:42
【问题描述】:
当用户浏览我的网站时,我最初使用静态变量来存储一些用户信息。我遇到了一些问题,有时用户会在某个地方导航并在页面上看到不同的用户名。我切换到使用会话变量来解决这个问题,但发生了同样的问题。然后我认为以某种方式使会话变量名称唯一可以解决问题,例如而不是
Session["userId"]
我更改了所有会话变量以在创建和引用用户时附加用户的唯一用户名,因此它们是:
Session["userId" + Context.Identity.User.Name.ToString()]
到目前为止,我还没有收到有关此问题的报告,但这真的可行吗?有没有一种简单的方法来保护会话,使变量不会在用户之间泄漏?我对ASP.NET 代码(特别是webforms)很有信心,但随着越来越多的用户使用该站点,我只遇到了会话问题。由于该站点是通过AWS Elastic Beanstalk 构建的,因此我对 IIS 设置没有太多控制权,因此它主要是默认的 IIS 设置。
【问题讨论】:
-
网络应用程序中的静态变量是有问题的(正如您所发现的),因为它是 一个 应用程序(共享静态数据)为多个用户服务。会话被设计为特定于用户(或浏览器,实际上)。你确定你替换了所有的静态元素吗?
-
我很确定。我只有一个包含用户属性和其他与站点功能相关的临时属性的静态类。我在整个过程中都用会话变量替换了它,并对静态对象进行了“查找所有引用”,但没有找到。网站很小,代码库很小,所以我很有信心,但我会重新检查
标签: asp.net session-variables session-state