[英]Can't connect with mysql server using c# at work
为什么我无法在我的工作办公室 PC 中使用来自 Nuget 的 C# 连接器连接到免费的云 mysql 数据库,而我可以使用 mysql CLI 工具很好地连接到同一台服务器?
连接失败时收到的消息是“连接超时已过期。”。
我还在家里的 PC 上试过,我可以使用完全相同的 C# 代码很好地连接。 Mysql CLI 工具也可以在家工作。
这可能是我工作公司网络中的防火墙或其他安全措施吗? 为什么它不阻止 mysql CLI 工具?
我还尝试在工作中使用 localhost mysql(在端口 51255 上使用 mysqld)。 我设法使用 mysql CLI 工具进行连接,但在 c# 代码上遇到了与以前相同的错误。
EDIT1 - 包含代码
EDIT2 - 本地主机尝试
private async Task<string> ConnectDB()
{
MySqlConnectionStringBuilder dbinfo = new MySqlConnectionStringBuilder
{
Server = "******",
Port = ****,
Database = "*****",
UserID = "*****",
Password = "*****",
};
using(MySqlConnection connection = new MySqlConnection(dbinfo.ConnectionString))
{
try
{
await connection.OpenAsync();
}
catch (MySqlException error)
{
message = error.Message;
}
if (connection.State == ConnectionState.Open)
{
message = "Success!";
}
}
return message;
}
我们看到相同的 C# 代码在家里工作,但在办公室却不行。 因此它不是代码; 一定是办公室环境的问题。 但是你可以通过命令行工具在办公室连接,所以它也不是公司防火墙,很难区分两者之间的区别。
剩下的是本地 PC 上的工作。 本地操作系统防火墙和防病毒软件都浮现在我的脑海中,而这两者中的防病毒软件对我来说听起来更可疑。 另一种选择是 DNS,办公室的 DNS 服务以不同的方式解析数据库的主机名。 但如果没有更多信息,这只是一个猜测。 我建议添加更多的日志记录; 现在我们甚至不知道完整的错误信息。
作为附加说明,将数据库直接公开到 Internet 并不常见,并且被认为是非常糟糕的做法。 此外,应用程序应与数据库良好连接。 多年来,“连接良好”的定义发生了变化,但“公共互联网”并不重要。 通常,如果您将数据库大部分托管在另一个位置,您将在数据库前面有一个 Web API 端点,该 API 的服务器可以与数据库位于同一位置,因此连接良好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.