gpt4 book ai didi

azure - 无法添加 Azure DB 防火墙规则以允许构建服务器运行测试

转载 作者:行者123 更新时间:2023-12-04 15:53:33 30 4
gpt4 key购买 nike

我们使用 Visual Studio Online 托管的构建服务器来自动化我们的构建过程。作为此过程的一部分,我正在考虑将单元和集成测试添加到此过程中。

这些测试需要访问我们的 SQL Azure DB(其中 2 个,都位于同一服务器上),而这又需要通过数据库服务器的防火墙进行访问。

我有一个 PowerShell 脚本,它使用 New-AzureRmSqlServerFirewallRule 将 IP 地址添加到数据库服务器,并且这些防火墙规则已成功显示在 Azure 门户中。

具体来说,该脚本添加了以下防火墙规则:

  • 构建服务器上的所有 IPv4 地址*(由 Get-NetIPAddress 返回)
  • 构建服务器的外部 IP 地址(由 https://api.ipify.org 返回)

结合起来,似乎会自动添加预定义的 AllowAllAzureIPsAllowAllWindowsAzureIps 规则。

但是,测试随后失败,但出现以下异常:

System.Data.SqlClient.SqlException: System.Data.SqlClient.SqlException: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)

我不确定为什么构建服务器无法访问数据库服务器 - 是否是测试进程的主机正在使用不同的 IP 地址?

更新
正如已经指出的,异常消息提到“Named Pipes Provider”,这表明数据库连接正在使用命名管道而不是 IP/TCP 连接。为了测试这一点,我更改了本地 app.config 以包含未知/随机/不可访问的 IP,并在本地运行测试(否则它们在本地成功运行):我收到了完全相同的异常消息,提到“命名管道提供商”。也许在某种程度上ReliableSqlConnection类解析为命名管道,但我的观点是,我可以通过在数据库连接字符串中更改为未知或无法访问的 IP 地址来引发同样的异常。

此外,数据库连接字符串以 tcp: 开头,根据 this blog post ,明确告诉连接使用 TCP/IP 而命名管道。

我还修改了防火墙规则以允许所有 IP 地址(0.0.0.0 到 255.255.255.255),但仍然抛出相同的异常。这表明 SQL Azure 防火墙规则不是“阻塞”的原因。

因此,我的怀疑转向网络访问被阻止(尽管可能存在白名单以允许构建服务器访问代码存储库)。我在构建过程的开始添加了一个非常简单的 PowerShell 脚本:

Test-Connection "172.217.18.100" #resolves to www.google.com

这会导致

Testing connection to computer '172.217.18.100' failed: Error due to lack of resources

构建服务器是否禁用了 ping/ICMP 或者是否阻止了所有传出流量?

* 该脚本仅考虑 IPv4 地址,因为我尚未成功地将 IPv6 地址传递给 New-AzureRmSqlServerFirewallRule

最佳答案

我们终于解决了这个问题。该问题与防火墙无关。问题是我们的单元测试中的 app.config 文件没有经历 web.config 文件所做的转换步骤。所以所有的设置都是来 self 们本地的开发,因此是错误的。

更多相关信息请参见:
Connect to external services inside Visual Studio Online build/test task

关于azure - 无法添加 Azure DB 防火墙规则以允许构建服务器运行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41165554/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com