Пример #1
0
 /// <summary>
 ///     向浏览器输出内容
 /// </summary>
 /// <param name="message"></param>
 public void WriteToClient(ErrorMessage message)
 {
     _response.Write(JsonConvert.SerializeObject(message));
 }
Пример #2
0
        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
                    });
                }
            }
        }
Пример #3
0
        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(),
                    });
                }
            }
        }