0

我使用 Snowflake.Data(来自 Snowflake 的 .NET 连接器)在 .NET 5 中构建了一个小型后端应用程序。该应用程序应该从 SNOWFLAKE_SAMPLE_DATA 中的单个模式中提取数据。我将 SnowflakeDbConnection 添加为 Startup.cs 中的 IDbConnection。然后,我有一个服务,它在我的控制器调用它时初始化连接。很简单的设置。

当服务被调用时,它调用 IDbConnection.Open(),设置 ConnectionString,然后...

连接无法打开并超时。我得到错误Snowflake Internal Error: Unable to connect. One or more errors occurred. (Request reach its timeout.) SqlState: 08006, VendorCode: 27001)

所以 IDbConnection 正确映射到雪花,但这就是我从那个错误中所知道的。

根据 Snowflake 文档中的指导,我安装了 SnowCD(他们的诊断工具)并allowlist.json根据文档运行、下载和验证。基本上,它是连接器需要访问的所有端口的列表,您可以在不运行整个应用程序的情况下运行快速检查 - 它根本没有连接到应用程序代码。无论如何,我得到一个错误:


 

Check for 1 hosts failed, display as follow: 

==============================================

Host: ocsp.pki.goog 

Port: 80 

Type: OCSP_RESPONDER

Failed Check: HTTP checker

Error: Invalid http code received: 404 Not Found 

Suggestion: Check the connection to your http host or transparent Proxy

这是 中的两个OCSP_RESPONDER条目之一allowlist.json,但它不是我在浏览器中检查证书时出现的那个,也不是 Snowflake 说它用于我的集群中的部署的那个。正在使用的那个(digicert)不会引发错误。我没有使用任何代理,我没有在防火墙后面工作,等等。只有我在我的笔记本电脑上,在我的本地主机上工作。

所以我使用 telnet 来检查我与 ocsp.pki.goog 的连接,它在端口 80 和 443 上以及当我发出 curl 请求时都很好。

我的问题:

  1. 当我的终端正常时,为什么这会通过 SnowCD 失败?
  2. 为什么 allowlist.json 包含 2 个 OCSP 提供程序?需要2个证书吗?为什么?
  3. .NET 连接器是否也尝试联系 ocsp.pki.goog 并失败,这就是我的连接失败的原因?

似乎超时行为和模糊的错误消息与无法联系证书提供者一致,但我不知道在 nuget 包中可能发生的位置,也不知道为什么需要 2 个 OCSP 响应。

我怎样才能弄清楚这里发生了什么?这是我可以以某种方式解决的问题吗?

我不需要写能力,这就是我使用 .NET 驱动程序而不是 ODBC 的原因。那会是一个更好/更可靠的选择,还是我可能会遇到同样的问题?不过,我宁愿不回到第 1 格 - 那么对于 .NET 连接器的故障排除我没有想到什么?

此外,为了记录,我已经使用了我的连接字符串、我的 https 设置等。行为没有变化,而且似乎这些问题无论如何都会产生不同的行为/错误。

4

0 回答 0