/// <summary> /// 向浏览器输出内容 /// </summary> /// <param name="message"></param> public void WriteToClient(ErrorMessage message) { _response.Write(JsonConvert.SerializeObject(message)); }
public void CallTimeOut() { lock (_obj) { Thread.Sleep(new Random().Next(1, 500)); if (IsSessionValid()) //只有session校验通过后,才进行一些其他的操作 { #region 如果不能添加到数据库,跳转到result页 if (!IsDbValid()) //只有存在RelayId的时候检查字表的数量 { int relayId = SessionHelp.UserChengji.RelayId; SessionHelp.UserChengji.Dispose(); var message = new ErrorMessage { Finished = true, Score = 0, Status = Status.Error, Exception = "手慢了0.01s,看看是谁抢先完成了帮帮跑!", IsShowException = true, }; if (relayId != 0) { message.Url = "Relayresult.aspx?" + Parameters.relay + "=" + relayId; } else { message.Url = SessionHelp.IndexUrl; } WriteToClient(message); return; } #endregion #region 如果需要修改或添加数据 InitRequestQuerystring(); #region 成功添加数据,跳转result页 if (CheckData()) { if (!SessionHelp.UserChengji.IsAddedToDb) //没有添加过数据库中 { var score = SessionHelp.UserChengji.Score; int relayId = AddDb(); //添加到数据 SessionHelp.UserChengji.Dispose(); //清除session中的成绩 WriteToClient(new ErrorMessage { Score = score, Finished = true, //添加一个score参数用于显示成绩 Url = ("Relayresult.aspx?" + Parameters.relay + "=" + relayId + "&score=" + score).AddTimeStamp(), }); } return; } #endregion #region 如果数据校验失败 或者已经添加到数据库的话,session中成绩信息都清除了,所以最好是让他返回首页 WriteToClient(new ErrorMessage { Status = Status.Error, Exception = "游戏过程不安全,请稍后重试", IsShowException = true, Score = 0, Finished = true, Url = SessionHelp.IndexUrl }); #endregion #endregion } else { SessionHelp.UserChengji.Dispose(); WriteToClient(new ErrorMessage { Status = Status.Error, Exception = "你没有登陆,请稍后重试", IsShowException = true, Finished = true, Url = SessionHelp.IndexUrl }); } } }
public void CallTimeOut() { lock (_obj) { Thread.Sleep(new Random().Next(1, 500)); if (IsSessionValid()) //只有session校验通过后,才进行一些其他的操作 { //保证只添加ji条记录 if (!IsDbValid()) //只有存在RelayId的时候检查字表的数量 { int relayId = SessionHelp.UserChengji.RelayId; SessionHelp.UserChengji.Dispose(); var message = new ErrorMessage { Finished = true, Score = 0, Status = Status.Error, Exception = "手慢了0.01s,看看是谁抢先完成了帮帮跑!", IsShowException = true, }; if (relayId != 0) { message.Url = "Relayresult.aspx?" + Parameters.relay + "=" + relayId; } else { message.Url = SessionHelp.IndexUrl; } WriteToClient(message); //_response.End(); //在Handler中强制终结request请求,会抛出异常 return; } InitRequestQuerystring(); double score = SessionHelp.UserChengji.Score; if (!SessionHelp.UserChengji.IsAddedToDb) //是否添加过数据库中 { int relayId = AddDb(); //添加到数据 SessionHelp.UserChengji.Dispose(); //清除session中的成绩 WriteToClient(new ErrorMessage { Score = score, Finished = true, Url = ("Relayresult.aspx?" + Parameters.relay + "=" + relayId).AddTimeStamp(), }); } else //如果添加过数据库的话,session中成绩信息都清除了,所以最好是让他返回首页 { WriteToClient(new ErrorMessage { Score = score, Finished = true, Url = ("Relayindex.aspx?" + Parameters.relay + "=" + SessionHelp.CycleId).AddTimeStamp(), }); } } else { SessionHelp.UserChengji.Dispose(); WriteToClient(new ErrorMessage { Finished = true, Url = ("Relayindex.aspx?" + Parameters.cycle + "=" + SessionHelp.CycleId).AddTimeStamp(), }); } } }