重复的会话变量

时间:2014-08-21 03:11:50

标签: c# asp.net session-variables

在c#中使用asp.net是否可以检查会话值是否已存在。对我来说很难解释但是不好意思:

User1登录 - 输入用户名(jSmith)此值将是识别user1的唯一方法。不会生成密码或数据库条目。将保存此信息的会话变量 User2登录 - 输入用户名(jSmith),因为此值已存在我希望能够阻止user2设置此值

谢谢!

1 个答案:

答案 0 :(得分:2)

会话变量的内容对每个用户都是唯一的。也就是说,用户A的Session["Foo"]与用户B的Session["Foo"]完全不同。此外,由于各种原因,会话变量可能超出范围,最常见的是内存压力。我讨厌你的用户退出'当服务器忙碌时随机发生。

您可能需要考虑Application对象,因为其内容在所有用户之间共享。此外,您可以考虑任何静态对象也可以是可访问的交叉请求。就个人而言,我会考虑将数据存储在静态集合中(希望内置某种线程安全性)......

例如:

public static class UserHelper 
{
   public static ConcurrentDictionary<string, DateTime> CurrentUsers = new ConcurrentDictionary<string, object>();
}

然后消费

if(UserHelper.CurrentUsers.TryAdd("jSmith", DateTime.Now))
    return "User Login recorded.";
else
    return "User already logged in, try again."