客户端同时点击登录按钮,后台如何处理

cblhahah 2014-07-11 01:33:56
大神指教,大神指教,大神指教,大神指教,大神指教,大神指教,
...全文
291 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
kaola_2539182730 2014-07-13
  • 打赏
  • 举报
回复
处理登陆信息如下: protected void btnLoad_Click(object sender, ImageClickEventArgs e) { HttpCookie cookie = Request.Cookies["CheckCode"]; if (String.Compare(cookie.Value, txtVali.Text, true) != 0) { Response.Write("<script lanuage=javascript>alert('验证码错误');location='javascript:history.go(-1)'</script>"); } else { DataSet ds = DB.reDs("select * from tb_HuenLian where UserName='" + txtUid.Text.Trim() + "' and PassWord='" + txtPwd.Text.Trim() + "'"); int i = this.checkLogin(txtUid.Text, txtPwd.Text); if (i > 0) { Session["id"] = ds.Tables[0].Rows[0][0].ToString(); Session["UserName"] = this.txtUid.Text;//记录用户名 Session["PassWord"] = this.txtPwd.Text;//记录密码 Page.Response.Redirect("Yonghu.aspx");//登陆成功跳转地址 } else {//CodeGo.net/ Response.Write("<script lanuage=javascript>alert('用户名称或密码错误!');location='javascript:history.go(-1)'</script>"); } } } public int checkLogin(string loginName, string loginPwd) { SqlConnection con = new SqlConnection(ConfigurationManager.AppSettings["conn"]); SqlCommand myCommand = new SqlCommand("select count(*) from tb_HuenLian where UserName=@loginName and PassWord=@loginPwd", con); myCommand.Parameters.Add(new SqlParameter("@loginName", SqlDbType.NVarChar, 20)); myCommand.Parameters["@loginName"].Value = loginName; myCommand.Parameters.Add(new SqlParameter("@loginPwd", SqlDbType.NVarChar, 50)); myCommand.Parameters["@loginPwd"].Value = loginPwd; myCommand.Connection.Open(); int i = (int)myCommand.ExecuteScalar(); myCommand.Connection.Close(); return i; }
allen0118 2014-07-12
  • 打赏
  • 举报
回复
为了防止并发,可以采用lock锁上,当一个用户在操作的时候就不允许其他用户操作。
 public static Dictionary<string, object> lockDic = new Dictionary<string, object>();


        void CreateSN() 
        {
            //每次只允许符合条件的数据,避免并发。
            lock (lockDic[""])
            {
                //....
            }
        }
xixihaha_2011_098 2014-07-12
  • 打赏
  • 举报
回复
服务端做处理前创建队列. 处理的时候轮询队列呗
wangnaisheng 2014-07-11
  • 打赏
  • 举报
回复
同时操作的话最好上锁,lock 这样基本上是不会有影响了、
  • 打赏
  • 举报
回复
如果应对可能产生 --〉 如果要应对可能产生
  • 打赏
  • 举报
回复
没有什么编程经验的人,可能认为“服务器有个先来后到的”。 asp.net至少在2.0以上,是并发多线程处理前端请求的。所谓并发,比如说有两个线程中的代码,第一个执行
x = b + 1;
而另一个执行
x = b - 1;
这仍然会产生数据结果的冲突(错乱)。 但是别忘记了,你的页面中的代码通常并不共享这样的变量(x和b)。 同时假设这里的x和b是指数据库中的数据,你如果使用关系数据库,通常关系数据库的事务保护级别是可以做到避免幻像读数据的。 然而,现在几乎所有高效率的NoSQL都不支持这类数据库事务,也就说完全可能产生错误的数据。可是这种方式非常流行,如果应对可能产生的错误,请你自己去网上找答案吧。
  • 打赏
  • 举报
回复
问题阐述的不够清楚啊
a402485188 2014-07-11
  • 打赏
  • 举报
回复
同时点击登陆有影响的么?
Justin-Liu 2014-07-11
  • 打赏
  • 举报
回复
没有page都是不同的实例,不用全局变量的话没有影响 数据库查询用with nolock
M依然 2014-07-11
  • 打赏
  • 举报
回复
和楼上意见一致。同时点击有什么影响呢??
於黾 2014-07-11
  • 打赏
  • 举报
回复
这个跟同时不同时有任何关系?逻辑都是一样的. 你只要别用全局静态变量来放东西,就不会互相影响.
tiannailu 2014-07-11
  • 打赏
  • 举报
回复
同时点击?怎么也有个先来后到吧。
geyewei 2014-07-11
  • 打赏
  • 举报
回复
是指多个客户端同时点击登录按钮?还是一个客户端迅速的按了两次按钮? 这个登录指的是 Log On?还是往数据库里面插数据? 客户端是WinForm?还是WebForm?
Cnwanglin 2014-07-11
  • 打赏
  • 举报
回复
同时点击? 服务器端总有个接受 的先后顺序 先到的不管是哪个,后到的拒绝就是了
cblhahah 2014-07-11
  • 打赏
  • 举报
回复
自己顶顶自己顶顶自己顶顶自己顶顶

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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