刚刚实现了用session.sesssionid和application 来控制多用户登陆。
主要代码如下:
void
Application_Start(
object
sender, EventArgs e)
{
Application.Lock();
ArrayList LoginList = new ArrayList();
LoginList.Add( " initalDate* " );
Application[ " LoginList " ] = LoginList;
Application.UnLock();
}
void Session_End( object sender, EventArgs e)
{
Application.Lock();
string userID = Session[ " UserID " ].ToString();
string sessionID = Session.SessionID;
ArrayList userLogin = (ArrayList)Application[ " LoginList " ];
if (userLogin.Contains(userID))
{
userLogin.Remove(userID);
}
if (userLogin.Contains(userID + " _ " + sessionID))
{
userLogin.Remove(userID + " _ " + sessionID);
}
Application.UnLock();
}
{
Application.Lock();
ArrayList LoginList = new ArrayList();
LoginList.Add( " initalDate* " );
Application[ " LoginList " ] = LoginList;
Application.UnLock();
}
void Session_End( object sender, EventArgs e)
{
Application.Lock();
string userID = Session[ " UserID " ].ToString();
string sessionID = Session.SessionID;
ArrayList userLogin = (ArrayList)Application[ " LoginList " ];
if (userLogin.Contains(userID))
{
userLogin.Remove(userID);
}
if (userLogin.Contains(userID + " _ " + sessionID))
{
userLogin.Remove(userID + " _ " + sessionID);
}
Application.UnLock();
}
登陆界面中主要代码如下:
ArrayList tempValue = new ArrayList();
Session[ " UserName " ] = username;
Session[ " UserID " ] = userID;
Session[ " type " ] = usertype;
Application.Lock();
ArrayList userLogin = (ArrayList)Application[ " LoginList " ];
if (userLogin.Contains(userID))
{
foreach ( string listValue in userLogin)
{
if (listValue.Contains(userID + " _ " ))
{
tempValue.Add(listValue);
}
}
if (tempValue != null )
{
for ( int i = 0 ; i < tempValue.Count; i ++ )
{
userLogin.Remove(tempValue[i].ToString());
}
}
userLogin.Add(userID + " _ " + Session.SessionID);
}
else
{
userLogin.Add(userID);
userLogin.Add(userID + " _ " + Session.SessionID);
}
Application.UnLock();
然后在各页面中对session["userID"]和sessionID进行判断并控制。