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;
        }
    }

Try/Catch未处理SQL错误:无法从传输连接读取数据:远程主机强制关闭了现有连接

尝试在注册表类型DWORD中的HKEY_LOCAL_MACHINE''SYSTEM''CurrentControlSet''Services''Tcpip''Parameters''位置添加一个值为00000000的项"SynAttackProtect"

设置此注册表项可能会使服务器暴露于SYN泛滥、拒绝服务攻击。只有在了解安全风险的情况下,才在必要时添加此注册表值。测试完成后删除此注册表值。

参考文献:https://technet.microsoft.com/en-us/library/ms187005(v=sql.105).aspx