diff --git a/FunGame.Server/Controllers/DataRequestController.cs b/FunGame.Server/Controllers/DataRequestController.cs
index 026d596..7b49821 100644
--- a/FunGame.Server/Controllers/DataRequestController.cs
+++ b/FunGame.Server/Controllers/DataRequestController.cs
@@ -489,26 +489,28 @@ namespace Milimoe.FunGame.Server.Controller
else
{
// 发送验证码,需要先删除之前过期的验证码
+ SQLHelper.NewTransaction();
SQLHelper.Execute(RegVerifyCodes.Delete_RegVerifyCode(username, email));
RegVerify = Verification.CreateVerifyCode(VerifyCodeType.NumberVerifyCode, 6);
SQLHelper.Execute(RegVerifyCodes.Insert_RegVerifyCode(username, email, RegVerify));
if (SQLHelper.Result == SQLResult.Success)
{
+ SQLHelper.Commit();
if (MailSender != null)
{
// 发送验证码
string ServerName = Config.ServerName;
string Subject = $"[{ServerName}] FunGame 注册验证码";
- string Body = $"亲爱的 {username},
感谢您注册[{ServerName}],您的验证码是 {RegVerify} ,10分钟内有效,请及时输入!
{ServerName}
{DateTimeUtility.GetDateTimeToString(TimeType.DateOnly)}";
- string[] To = new string[] { email };
+ string Body = $"亲爱的 {username},
感谢您注册[{ServerName}],您的验证码是 {RegVerify} ,10分钟内有效,请及时输入!
{ServerName}
{DateTimeUtility.GetDateTimeToString(TimeType.LongDateOnly)}";
+ string[] To = [email];
if (MailSender.Send(MailSender.CreateMail(Subject, Body, System.Net.Mail.MailPriority.Normal, true, To)) == MailSendResult.Success)
{
ServerHelper.WriteLine(Server.GetClientName() + $" 已向{email}发送验证码:{RegVerify}");
}
else
{
- ServerHelper.WriteLine(Server.GetClientName() + " 无法发送验证码");
- ServerHelper.WriteLine(MailSender.ErrorMsg);
+ ServerHelper.WriteLine(Server.GetClientName() + " 无法发送验证码", InvokeMessageType.Error);
+ ServerHelper.WriteLine(MailSender.ErrorMsg, InvokeMessageType.Error);
}
}
else // 不使用MailSender的情况
@@ -517,6 +519,7 @@ namespace Milimoe.FunGame.Server.Controller
}
returnType = RegInvokeType.InputVerifyCode;
}
+ else SQLHelper.Rollback();
}
}
}
@@ -540,6 +543,7 @@ namespace Milimoe.FunGame.Server.Controller
// 注册
if (RegVerify.Equals(SQLHelper.DataSet.Tables[0].Rows[0][RegVerifyCodes.Column_RegVerifyCode]))
{
+ SQLHelper.NewTransaction();
ServerHelper.WriteLine("[Reg] UserName: " + username + " Email: " + email);
SQLHelper.Execute(UserQuery.Insert_Register(username, password, email, Server.Socket?.ClientIP ?? ""));
if (SQLHelper.Result == SQLResult.Success)
@@ -547,9 +551,11 @@ namespace Milimoe.FunGame.Server.Controller
success = true;
msg = "注册成功!请牢记您的账号与密码!";
SQLHelper.Execute(RegVerifyCodes.Delete_RegVerifyCode(username, email));
+ SQLHelper.Commit();
}
else
{
+ SQLHelper.Rollback();
msg = "服务器无法处理您的注册,注册失败!";
}
}
@@ -704,8 +710,8 @@ namespace Milimoe.FunGame.Server.Controller
// 发送验证码
string ServerName = Config.ServerName;
string Subject = $"[{ServerName}] FunGame 找回密码验证码";
- string Body = $"亲爱的 {username},
您正在找回[{ServerName}]账号的密码,您的验证码是 {ForgetVerify} ,10分钟内有效,请及时输入!
{ServerName}
{DateTimeUtility.GetDateTimeToString(TimeType.DateOnly)}";
- string[] To = new string[] { email };
+ string Body = $"亲爱的 {username},
您正在找回[{ServerName}]账号的密码,您的验证码是 {ForgetVerify} ,10分钟内有效,请及时输入!
{ServerName}
{DateTimeUtility.GetDateTimeToString(TimeType.LongDateOnly)}";
+ string[] To = [email];
if (MailSender.Send(MailSender.CreateMail(Subject, Body, System.Net.Mail.MailPriority.Normal, true, To)) == MailSendResult.Success)
{
ServerHelper.WriteLine(Server.GetClientName() + $" 已向{email}发送验证码:{ForgetVerify}");
diff --git a/FunGame.Server/Main.cs b/FunGame.Server/Main.cs
index f0e20cb..a10074d 100644
--- a/FunGame.Server/Main.cs
+++ b/FunGame.Server/Main.cs
@@ -224,7 +224,7 @@ bool Connect(ClientSocket socket, Guid token, string clientip, ref bool isDebugM
return false;
}
- ServerHelper.WriteLine("[" + ServerSocket.GetTypeString(read.SocketType) + "] " + ServerHelper.MakeClientName(socket.ClientIP), InvokeMessageType.Core);
+ ServerHelper.WriteLine("[" + SocketSet.GetTypeString(read.SocketType) + "] " + ServerHelper.MakeClientName(socket.ClientIP), InvokeMessageType.Core);
// 读取参数
// 参数1:客户端的游戏模组列表,没有服务器的需要拒绝
diff --git a/FunGame.Server/Models/ServerModel.cs b/FunGame.Server/Models/ServerModel.cs
index 12a9611..1348f2e 100644
--- a/FunGame.Server/Models/ServerModel.cs
+++ b/FunGame.Server/Models/ServerModel.cs
@@ -83,7 +83,7 @@ namespace Milimoe.FunGame.Server.Model
// 验证Token
if (type != SocketMessageType.HeartBeat && token != Token)
{
- ServerHelper.WriteLine(GetClientName() + " 使用了非法方式传输消息,服务器拒绝回应 -> [" + ServerSocket.GetTypeString(type) + "] ");
+ ServerHelper.WriteLine(GetClientName() + " 使用了非法方式传输消息,服务器拒绝回应 -> [" + SocketSet.GetTypeString(type) + "] ");
return false;
}
@@ -111,7 +111,7 @@ namespace Milimoe.FunGame.Server.Model
switch (type)
{
case SocketMessageType.Disconnect:
- ServerHelper.WriteLine("[" + ServerSocket.GetTypeString(SocketMessageType.DataRequest) + "] " + GetClientName() + " -> Disconnect", InvokeMessageType.Core);
+ ServerHelper.WriteLine("[" + SocketSet.GetTypeString(SocketMessageType.DataRequest) + "] " + GetClientName() + " -> Disconnect", InvokeMessageType.Core);
msg = "你已成功断开与服务器的连接: " + Config.ServerName + "。 ";
break;
}
@@ -139,9 +139,7 @@ namespace Milimoe.FunGame.Server.Model
type = SocketObject.GetParam(0);
Hashtable data = SocketObject.GetParam(1) ?? [];
- SQLHelper.NewTransaction();
result = DataRequestController.GetResultData(type, data);
- SQLHelper.Commit();
}
catch (Exception e)
{
@@ -207,7 +205,7 @@ namespace Milimoe.FunGame.Server.Model
}
object obj = objs[0];
if (obj.GetType() == typeof(string) && (string)obj != "")
- ServerHelper.WriteLine("[" + ServerSocket.GetTypeString(type) + "] " + GetClientName() + " <- " + obj, InvokeMessageType.Core);
+ ServerHelper.WriteLine("[" + SocketSet.GetTypeString(type) + "] " + GetClientName() + " <- " + obj, InvokeMessageType.Core);
return true;
}
throw new CanNotSendToClientException();
@@ -565,7 +563,7 @@ namespace Milimoe.FunGame.Server.Model
private void CreateStreamReader()
{
- Thread.Sleep(100);
+ Thread.Sleep(20);
ServerHelper.WriteLine("Creating: StreamReader -> " + GetClientName() + " ...OK");
while (Running)
{
@@ -598,13 +596,24 @@ namespace Milimoe.FunGame.Server.Model
private void CreatePeriodicalQuerier()
{
- Thread.Sleep(100);
+ Thread.Sleep(20);
ServerHelper.WriteLine("Creating: PeriodicalQuerier -> " + GetClientName() + " ...OK");
while (Running)
{
// 每两小时触发一次SQL服务器的心跳查询,防止SQL服务器掉线
- Thread.Sleep(2 * 1000 * 3600);
- SQLHelper?.ExecuteDataSet(UserQuery.Select_IsExistUsername(UserName));
+ try
+ {
+ Thread.Sleep(2 * 1000 * 3600);
+ SQLHelper?.ExecuteDataSet(UserQuery.Select_IsExistUsername(UserName));
+ }
+ catch (Exception e)
+ {
+ ServerHelper.Error(e);
+ RemoveUser();
+ Close();
+ ServerHelper.WriteLine(GetClientName() + " Error -> Socket is Closed.");
+ ServerHelper.WriteLine(GetClientName() + " Close -> StringStream is Closed.");
+ }
}
}