我创建了一个DotNet
应用程序,在数据库中插入一些数据,为了管理这种情况并处理不同的数据库配置,我创建了一个名为cred.json
的json,其中包含有关的所有信息。服务器连接。结构如下:
{
"Server":"localhost",
"Database":"mydb",
"User":"root",
"Password":"root",
"SslMode":false,
"CharacterSet":"utf8",
"Port":"3307"
}
连接类包含一个名为Connect
的方法,该方法读取cred.json
中可用的配置:
var json = JsonConvert.DeserializeObject<Cred>(File.ReadAllText("cred.json"));
MySqlConnectionStringBuilder conn = new MySqlConnectionStringBuilder();
conn.Server = json.Server;
conn.Database = json.Database;
conn.UserID = json.User;
conn.Password = json.Password;
conn.SslMode = GetSslMode(json.SslMode);
conn.CharacterSet = json.CharacterSet;
conn.Port = json.Port;
MySqlConnection = new MySqlConnection(conn.ToString());
MySqlConnection.Open();
我还有一个名为GetSslMode
的方法,它返回特定的SslMode
:
private MySqlSslMode GetSslMode(string sslMode)
{
switch (sslMode)
{
case "Required":
return MySqlSslMode.Required;
case "VerifyCA":
return MySqlSslMode.VerifyCA;
case "VerifyFull":
return MySqlSslMode.VerifyFull;
default:
return MySqlSslMode.None;
}
}
模型Cred
是一个简单的类,它包含json的结构:
class Cred
{
public string Server { get; set; }
public string Database { get; set; }
public string User { get; set; }
public string Password { get; set; }
public string SslMode { get; set; }
public string CharacterSet { get; set; }
public uint Port { get; set; }
}
当代码在Windows上达到MySqlConnection.Open();
时,它可以工作,但是当我在Linux上尝试使用该应用程序将端口更改为80
时,我得到:
连接必须有效并且打开
但凭据是正确的,我该如何诊断问题?