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");
        }