我們正在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 –