EF 核心连接超时?但无一例外
EF Core Connection Timeout ? but no exceptions
我在健康检查控制器中使用以下代码来确认 EF Core 数据库连接正常:
using (var con = _dbContext.Database.GetDbConnection())
{
_logger.LogInformation($"Connecting to {con.ConnectionString}");
try
{
await con.OpenAsync();
con.Close();
return true;
}
catch (Exception ex)
{
_logger.LogError(ex, "Connection failed");
}
finally
{
_logger.LogInformation("Connection test done");
}
}
执行后,我在日志中看到一个条目 "Connecting to ...",其中包含正确的连接字符串。
它永远不会完成,我在日志中也没有看到异常。 api 以 504 超时结束。我的连接字符串有“...;Connection Timeout=10”,但似乎花费的时间比这长得多。
我完全被难住了。我花了 4 个小时使用 AWS 支持,他们认为这是我的代码。我们证明网络连接有效,所以我猜它们是正确的,但我不知道还能做什么。我打开了详细日志记录也可以从 EF Core 或 SQL 客户端明显看不到任何东西。
有人知道吗?
我知道过去 using 语句和 EF GetDbConnection() 的组合有一些 issues。
尝试不使用 using
块。
var con = _dbContext.Database.GetDbConnection();
_logger.LogInformation($"Connecting to {con.ConnectionString}");
try
{
await con.OpenAsync();
con.Close();
return true;
}
catch (Exception ex)
{
_logger.LogError(ex, "Connection failed");
}
finally
{
_logger.LogInformation("Connection test done");
}
我在健康检查控制器中使用以下代码来确认 EF Core 数据库连接正常:
using (var con = _dbContext.Database.GetDbConnection())
{
_logger.LogInformation($"Connecting to {con.ConnectionString}");
try
{
await con.OpenAsync();
con.Close();
return true;
}
catch (Exception ex)
{
_logger.LogError(ex, "Connection failed");
}
finally
{
_logger.LogInformation("Connection test done");
}
}
执行后,我在日志中看到一个条目 "Connecting to ...",其中包含正确的连接字符串。 它永远不会完成,我在日志中也没有看到异常。 api 以 504 超时结束。我的连接字符串有“...;Connection Timeout=10”,但似乎花费的时间比这长得多。
我完全被难住了。我花了 4 个小时使用 AWS 支持,他们认为这是我的代码。我们证明网络连接有效,所以我猜它们是正确的,但我不知道还能做什么。我打开了详细日志记录也可以从 EF Core 或 SQL 客户端明显看不到任何东西。
有人知道吗?
我知道过去 using 语句和 EF GetDbConnection() 的组合有一些 issues。
尝试不使用 using
块。
var con = _dbContext.Database.GetDbConnection();
_logger.LogInformation($"Connecting to {con.ConnectionString}");
try
{
await con.OpenAsync();
con.Close();
return true;
}
catch (Exception ex)
{
_logger.LogError(ex, "Connection failed");
}
finally
{
_logger.LogInformation("Connection test done");
}