我有一个使用 MySqlConnection 类的 .NET Core 程序。我的数据库是存储在 Azure 中的 ClearDB 数据库。
当我启动该程序时,它会正常工作。但是当我等待 10 分钟什么都不做时,它不会再连接到数据库(超时?)。重新启动程序,它再次工作。
查看 ClearDB 网页上的连接时,当我在程序中关闭它时,它并没有关闭。正如我在 ClearDB 网页中看到的那样,大约 10 分钟后它会自动关闭。但是随着程序仍在运行,它将不再连接到数据库。重启程序是唯一的解决方案。
现在的代码看起来像这样:
private static async Task<uint> getDeviceId(string macAddress)
{
using (var connection = new MySqlConnection(ConnectionString))
{
uint returnvalue = 0;
var cmd = connection.CreateCommand() as MySqlCommand;
cmd.CommandText = @"SELECT id FROM devices WHERE mac = '" + macAddress + "'";
connection.Open();
Console.WriteLine(connection.State);
DbDataReader reader = await cmd.ExecuteReaderAsync();
using (reader)
{
while (await reader.ReadAsync())
{
returnvalue = await reader.GetFieldValueAsync<uint>(0);
}
}
reader.Dispose();
cmd.Dispose();
return returnvalue;
}
}
我尝试了以下方法:
- 使用语句
- 关闭/处理连接、阅读器和命令
- 连接字符串中的 Pooling=false
但它们都不起作用。有人有想法吗?