Try/Catch未处理SQL错误:无法从传输连接读取数据:远程主机强制关闭了现有连接
本文关键字:连接 主机 程主机 数据 SQL 错误 未处理 Catch Try 读取 传输 | 更新日期: 2023-09-27 18:22:13
[13/11/2015 16:09:59]错误:MySql.Data.MySqlClient.MySqlException(0x80004005):从流中读取失败。--->System.IO.IOException:无法从传输读取数据connection:远程强制关闭了现有连接主机。--->System.Net.Sockets.SocketException:现有连接被远程主机强制关闭
我在尝试打开SQL连接时偶尔会出现上述错误。发生此错误是因为数据库群集正忙于同步。我的主要问题是我的try/catch没有捕捉到异常,导致应用程序崩溃。我的代码如下,连接时抛出异常。打开()
private bool OpenConnection()
{
try
{
connection.Open();
ErrorMessaged = false;
return true;
}
catch (MySqlException ex)
{
if (MainInterface.Instance != null)
{
MainInterface.Instance.LogError(ex.ToString());
}
if (!ErrorMessaged)
{
switch (ex.Number)
{
case 0:
//Logs.AddToBugs("Cannot connect to server. Contact administrator");
MainInterface.Instance.Dispatcher.Invoke((Action)(() =>
{
MessageBox.Show("Cannot connect to server. Contact administrator");
}));
break;
case 1045:
//Logs.AddToBugs("Invalid username/password, please try again");
MainInterface.Instance.Dispatcher.Invoke((Action)(() =>
{
MessageBox.Show("Invalid username/password, please try again");
}));
break;
}
ErrorMessaged = true;
}
return false;
}
}
尝试在注册表类型DWORD中的HKEY_LOCAL_MACHINE''SYSTEM''CurrentControlSet''Services''Tcpip''Parameters''位置添加一个值为00000000的项"SynAttackProtect"
设置此注册表项可能会使服务器暴露于SYN泛滥、拒绝服务攻击。只有在了解安全风险的情况下,才在必要时添加此注册表值。测试完成后删除此注册表值。
参考文献:https://technet.microsoft.com/en-us/library/ms187005(v=sql.105).aspx