希望实现系统要求同一个用户在同一时间只能登录一次,但没成功(可以用一个账号同时成功登录系统),帮我看看错误出在哪里?
一、Global.asax中的代码:
void Application_Start(object sender, EventArgs e)
{
Application["YZTonline"] = 0;//程序刚开始的时候申请一个全局变量 } void Session_Start(object sender, EventArgs e)
{
Session.Contents["username"] = 0;
} void Session_End(object sender, EventArgs e)
{
string strUserId = Session["username"] as string;
ArrayList list = Application.Get("GLOBAL_USER_LIST") as ArrayList;
if (strUserId != null && list != null)
{
list.Remove(strUserId);
Application.Lock();
Application["YZTonline"] = list.Count;
Application.Add("GLOBAL_USER_LIST", list);
Application.UnLock();
} }二、Web.Config中的配置代码:
<system.web>
<globalization requestEncoding="gb2312" responseEncoding="gb2312"/>
<!--网页页面无乱码--> <sessionState mode="InProc" cookieless="true"/>
<compilation debug="true" targetFramework="4.0">
</compilation>三、登录验证代码:
string strUserId = this.txtusername.Text.ToString().Trim();
ArrayList list = Application.Get("GLOBAL_USER_LIST") as ArrayList;
if (list == null)
{
list = new ArrayList();
}
for (int i = 0; i < list.Count; i++)
{
if (strUserId == (list[i] as string))
{
Response.Write("<script>window.alert('您已经登录系统。如非“安全退出”方式关闭系统,请稍候片刻再尝试登录。');</script>");
return;
}
}
long KeyNumber = Cooperate_Office.Old_App_Code.SmartWebServerScript.GetUserNumber();
if (list.Count >= KeyNumber)
{
Response.Write("<script>window.alert('当前登录的用户数已经达到开发商允许最大登录数,请与开发商联系。');</script>");
return;
}
list.Add(strUserId);
Application.Lock();
Application.Add("GLOBAL_USER_LIST", list);
Application["YZTonline"] = Convert.ToInt32(Application["YZTonline"]) + 1;
Application.UnLock();我自己看了一下好像Application.Add("GLOBAL_USER_LIST", list)没有正确执行,list中没有数据。
一、Global.asax中的代码:
void Application_Start(object sender, EventArgs e)
{
Application["YZTonline"] = 0;//程序刚开始的时候申请一个全局变量 } void Session_Start(object sender, EventArgs e)
{
Session.Contents["username"] = 0;
} void Session_End(object sender, EventArgs e)
{
string strUserId = Session["username"] as string;
ArrayList list = Application.Get("GLOBAL_USER_LIST") as ArrayList;
if (strUserId != null && list != null)
{
list.Remove(strUserId);
Application.Lock();
Application["YZTonline"] = list.Count;
Application.Add("GLOBAL_USER_LIST", list);
Application.UnLock();
} }二、Web.Config中的配置代码:
<system.web>
<globalization requestEncoding="gb2312" responseEncoding="gb2312"/>
<!--网页页面无乱码--> <sessionState mode="InProc" cookieless="true"/>
<compilation debug="true" targetFramework="4.0">
</compilation>三、登录验证代码:
string strUserId = this.txtusername.Text.ToString().Trim();
ArrayList list = Application.Get("GLOBAL_USER_LIST") as ArrayList;
if (list == null)
{
list = new ArrayList();
}
for (int i = 0; i < list.Count; i++)
{
if (strUserId == (list[i] as string))
{
Response.Write("<script>window.alert('您已经登录系统。如非“安全退出”方式关闭系统,请稍候片刻再尝试登录。');</script>");
return;
}
}
long KeyNumber = Cooperate_Office.Old_App_Code.SmartWebServerScript.GetUserNumber();
if (list.Count >= KeyNumber)
{
Response.Write("<script>window.alert('当前登录的用户数已经达到开发商允许最大登录数,请与开发商联系。');</script>");
return;
}
list.Add(strUserId);
Application.Lock();
Application.Add("GLOBAL_USER_LIST", list);
Application["YZTonline"] = Convert.ToInt32(Application["YZTonline"]) + 1;
Application.UnLock();我自己看了一下好像Application.Add("GLOBAL_USER_LIST", list)没有正确执行,list中没有数据。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货