求教:用户重登陆的问题
部分代码如下:
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判断用户重登录,它的工作原理是什么?能否防止用户在不同的机器上重登陆?