【发布时间】:2019-11-16 04:40:47
【问题描述】:
我在运行状况检查控制器中有以下代码来确认 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”,但它似乎需要更长的时间。
我完全被难住了。我在 AWS 支持上花了 4 个小时,他们认为这是我的代码。我们证明了网络连接有效,所以我猜它们是正确的,但我不知道还能做什么。我已经打开了详细日志记录,也可以从 EF Core 或 SQL 客户端明显看出什么。
有人有想法吗?
【问题讨论】:
-
不。没有。超时大约需要一分钟。
-
那我觉得你没等多久。 API 超时不同于 SQL 连接超时。为什么不重试并等待 30 分钟左右(即使 API 已经超时)...您最终应该会看到
Connection test done... -
我的请求有 10 分钟的超时时间,但浏览器仍然给我 504 的时间要短得多。也许 ALB 正在削减是短的?
标签: .net asp.net-core ef-core-3.0