在c#中使用asp.net是否可以检查会话值是否已存在。对我来说很难解释但是不好意思:
User1登录 - 输入用户名(jSmith)此值将是识别user1的唯一方法。不会生成密码或数据库条目。将保存此信息的会话变量 User2登录 - 输入用户名(jSmith),因为此值已存在我希望能够阻止user2设置此值
谢谢!
答案 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."