我们正在TFS Online上运行我们的构建和测试过程。这工作正常,直到我们尝试连接到外部服务。在我们的例子中是SQL数据库。
关于我们应该嘲笑什么的讨论在这种情况下并不真正有用,因为目前我们需要这样做。连接到Visual Studio Online构建/测试任务中的外部服务
我们也尝试只是一个简单的ping,但即使不说是失控:
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
所以我们的印象中,最外面IP的/端口/等。可以锁定? 有没有办法打开它?如果是,如何?
我无法想象我们是第一个尝试这样的事情吗?从网站下载东西,制作REST等等?应该有可能,不是吗?
更新1:
我们有一些关于这个问题here更详细的问题,但想通这是一个比较通用的问题。
当我们连接到SQL Azure中的错误信息是
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)`
但命名管道提供商部分missleading。如果您尝试连接到不存在的IP,您也会在本地收到此消息。
我们从C#NUnit测试中访问Azure SQL。
更新2:
我们尝试了从@ starain-MSFT的想法,并安装了SQL Azure中执行查询的步骤/任务。安装工作正常,但它似乎错过了一个组件。见下图。
没有代理可以与以下功能中找到:azureps, SQLPS,NPM,Node.js的,MSBuild的,VisualStudio的,vstest
基于installed apps名单上我以为这是azureps。
解决方案(部分):
好了,所以我们去了错误的路线一路。问题不在于防火墙(或者任何防火墙)。问题在于我们的app.config文件中没有正确的设置。
我们在单元测试中的App.config文件与我们的Web.config文件具有相同的设置。每个都有一个App.Debug.config和一个App.Release.config文件。虽然这对Web应用程序来说工作得很好,但这显然不适用于我们的单元测试。
我们仍然在这里寻找一个好的解决方案。 我发现this solution on how to add a transform task inside Visual Studio,但这并不完全是我们正在搜索的内容,因为我们不需要本地变换,但只能在Visual Studio团队中进行。
app。config在Visual Studio团队内转换
所以,我想我们终于明白了。通过ConfigTransform,我们现在可以在构建过程中转换我们的app.config文件。
什么是ConnectionString?尝试通过SQL Server Management Studio进行连接并检查结果。 –
是的,这是有效的。我们可以连接到SQL Server,否则没有任何问题。只是看起来,所有与外部的连接都被阻止在构建过程中。就像我说的那样。 – Remy
如何配置Azure SQL Server可以从任何IP地址访问?关于防火墙规则,您可以添加Azure SQL执行查询步骤/任务,可以将规则添加构建代理IP地址,因此您可以在执行NUnit测试之前添加此步骤以执行简单脚本以将规则代理添加到构建代理IP(取消选中删除规则任务结束后)https://marketplace.visualstudio.com/items?itemName=geeklearningio.gl-vsts-tasks-azure&targetId=694f8310-2406-4022-b85e-97dd9106a4e9 –