求教:用户重登陆的问题

zhaoyi628 2007-06-11 02:52:33
部分代码如下:
if (loginReader.Read())
{
bool NotOL = true; //是否在线,默认不在线
for (int i = 0; i <= Application.Count; i++)
{
if (Application[Application.GetKey(i).ToString()].ToString() == loginName)
{
NotOL = false;
}
}
if (NotOL)
{

string power = loginReader[0].ToString();
if (power == "")
{
Server.Transfer("~/error.aspx");
}
else
{
Application[Session.SessionID.ToString()] = loginName;
Application["OL_UserCount"] = (int)Application["OL_UserCount"] + 1;
Session["UserName"] = loginName;
.....
}
Global.asax.cs
protected void Session_End(Object sender, EventArgs e)
{
Application.Lock();
Application.Remove(Session.SessionID.ToString());
Application["OL_UserCount"]=(int)Application["OL_UserCount"]-1;
Application.UnLock();
}
出现问题如下:1.if (Application[Application.GetKey(i).ToString()].ToString() == loginName):索引超出范围,必须为非负值并小于集合大小
2.Application["OL_UserCount"] = (int)Application["OL_UserCount"] + 1;未将对象引用设置到对象的实例

还有个问题:我没有用visual 2005自带的登陆控件,是否可以用User.Identity.IsAuthenticated判断用户重登录,它的工作原理是什么?能否防止用户在不同的机器上重登陆?


...全文
194 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhaoyi628 2007-06-11
  • 打赏
  • 举报
回复
没人说吗,给我个好的解决方案吧
zhaoyi628 2007-06-11
  • 打赏
  • 举报
回复
而且,在同一(或另开个)浏览器下,用户可以同名再登陆!怎么回事?
showrock 2007-06-11
  • 打赏
  • 举报
回复
这个问题多年来一直没解决啊,毕竟是B/S...
zhaoyi628 2007-06-11
  • 打赏
  • 举报
回复
现在的问题是:如果我登陆了后,关闭了浏览器,再同名登陆,就提示:该用户在线,无法登陆了! 该如何解决
zhaoyi628 2007-06-11
  • 打赏
  • 举报
回复
现在已经好了,谢谢!
再问下,用User.Identity.IsAuthenticated是否可以达到验证重登陆的目的?它有什么缺点吗?能否达到上面写的效果?望高手解答
今天晚些时候再揭帖
gcaling2006 2007-06-11
  • 打赏
  • 举报
回复
Application["OL_UserCount"] = (int)Application["OL_UserCount"] + 1;更改一下数据类型看看。
batiraul 2007-06-11
  • 打赏
  • 举报
回复
......
if(Application["OL_UserCount"]==null)
Application["OL_UserCount"]=0;
Application["OL_UserCount"] = (int)Application["OL_UserCount"] + 1;
......
zhaoyi628 2007-06-11
  • 打赏
  • 举报
回复
怎么没人说了呢,自己再顶下
zhaoyi628 2007-06-11
  • 打赏
  • 举报
回复
现在总是出现:Application["OL_UserCount"] = (int)Application["OL_UserCount"] + 1;
未将对象引用设置到对象的实例。
zhaoyi628 2007-06-11
  • 打赏
  • 举报
回复
逻辑没错啊。当用户在线时,不能登陆。这只是部分代码,你可能误认了
windstore 2007-06-11
  • 打赏
  • 举报
回复
if (loginReader.Read())
{
bool NotOL = true; //是否在线,默认不在线
for (int i = 0; i < Application.Count; i++) //是小于不是<=


还有你下面的逻辑是否反了?
if (NotOL) //如果不在线,返回错误?
{

string power = loginReader[0].ToString();
if (power == "")
{
Server.Transfer("~/error.aspx");
}
}
else //如果在线,再登录。。
{
Application[Session.SessionID.ToString()] = loginName;
Application["OL_UserCount"] = (int)Application["OL_UserCount"] + 1;
Session["UserName"] = loginName;
.....
}
zhaoyi628 2007-06-11
  • 打赏
  • 举报
回复
请问:如何改正
batiraul 2007-06-11
  • 打赏
  • 举报
回复
因为Application==null了,所以出错
zhaoyi628 2007-06-11
  • 打赏
  • 举报
回复
自己顶下

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧